C/C++ 你的代码风格真的是最好的吗?

本篇文章来自腾讯课堂骑牛学院VIP笔记!


代码布局

以码取人

普通人,以貌取人
程序员,以码取人

代码风格、代码布局,比代码质量更重要!
代码风格不好,直接被出局


极端代码布局

实例:

#include  
#include 
#include 
#define WIDTH		40   
#define HEIGHT		15
using namespace std;void init(void) {char cmd[128]; sprintf(cmd, "mode con cols=%d lines=%d", WIDTH, HEIGHT);system(cmd);}
void printInMiddle(string msg) {int space = (WIDTH - msg.length()) /2 ;for (int i=0; i<space; i++) {cout << " ";}cout << msg << endl;}
void menuShow(void) {string menu[] = {"1.网站404攻击","2.网站篡改攻击","3.网站攻击修复","4.查看攻击记录","5.退出"};system("cls");printInMiddle("---黑客攻击系统---");/* 计算菜单最大长度:*/int max = 0;int menuCount = sizeof(menu)/sizeof(menu[0]);for (int i=0; i< menuCount; i++) {if (menu[i].length() > max) {max = menu[i].length();}}int leftSpace = (WIDTH - max) / 2;for (int i=0; i<menuCount; i++) {for (int i=0; i<leftSpace; i++){printf(" ");}cout << menu[i] << endl;}}
int main(void) {init();menuShow();system("pause");return 0;}

出现场合:菜鸟也不会这么写,一般是外包程序员,给不愿意多出钱的甲方提供的源码。


稍好的代码布局:

#include  
#include 
#include 
#define WIDTH		40   
#define HEIGHT		15
using namespace std;
void init(void) 
{char cmd[128]; 
sprintf(cmd, "mode con cols=%d lines=%d", WIDTH, HEIGHT);
system(cmd);
}
void printInMiddle(string msg) 
{int space = (WIDTH - msg.length()) /2 ;
for (int i=0; i<space; i++) {
cout << " ";
}
cout << msg << endl;
}
void menuShow(void) 
{string menu[] = {
"1.网站404攻击","2.网站篡改攻击","3.网站攻击修复","4.查看攻击记录","5.退出"};
system("cls");
printInMiddle("---黑客攻击系统---");
/* 计算菜单最大长度:*/
int max = 0;int menuCount = sizeof(menu)/sizeof(menu[0]);
for (int i=0; i< menuCount; i++) {
if (menu[i].length() > max) {
max = menu[i].length();
}}
int leftSpace = (WIDTH - max) / 2;
for (int i=0; i<menuCount; i++) 
{for (int i=0; i<leftSpace; i++){
printf(" ");
}
cout << menu[i] << endl;
}}
int main(void) {
init();
menuShow();
system("pause");
return 0;
}

仍然是不合格的布局。


好的布局原则

要凸显程序的逻辑结构(注意,是逻辑结构,而不是外表结构)
魔鬼身材:该凸的凸,该凹的凹

计算机只看内涵,完全忽视外表

但是,代码有两个作用:

  1. 让计算机加工,变成可执行的软件
  2. 给程序员看的,用来进行维护,修改。

让人误解的代码:
int x = 1+2 * 2+5;

让人困惑的代码:
在这里插入图片描述


不同的审美冲突

C/C++ 你的代码风格真的是最好的吗?_第1张图片

接受他人的审美,保持自己的审美
最重要的是,审美观保持一致(代码风格保持一致)


把颜值控进行到底

不注重代码布局的程序员,不是好的程序员。

把“凸凹有致”的代码布局,作为一种信仰!

追求目标:

  1. 准确的表达代码的逻辑结构(不要让人误读,或者难以理解)
  2. 保持一致的布局风格
  3. 更好的可读性
  4. 更好的可维护性(便于修改)

布局技术

空白
空格,制表符,换行,空行

分组
把相关的语句组放在一起

缩进

括号
好的括号使用,让程序员从优先级中解脱出来
int x = 1 + 2 % 3 * 4 / 5;


布局风格

纯块结构

VB
C/C++ 你的代码风格真的是最好的吗?_第2张图片


模仿纯块结构 【个人推荐】

C/C++
C/C++ 你的代码风格真的是最好的吗?_第3张图片


指定块边界

格式
C/C++ 你的代码风格真的是最好的吗?_第4张图片
C/C++
C/C++ 你的代码风格真的是最好的吗?_第5张图片


指定块边界变种【VS推荐】

C/C++ 你的代码风格真的是最好的吗?_第6张图片


风格的选择

团队开发时,和团队保持一致。
个人开发时,风格保持不变。


风格的陷阱

C/C++ 你的代码风格真的是最好的吗?_第7张图片


段落之间要空行

错误:
C/C++ 你的代码风格真的是最好的吗?_第8张图片
正确:
C/C++ 你的代码风格真的是最好的吗?_第9张图片


If 语句的艰难选择

C/C++ 你的代码风格真的是最好的吗?_第10张图片
都有人在使用。

推荐第2种.

重要的是要保持一致。

第一种最烂.


多个条件的布局

错误
在这里插入图片描述

正确
在这里插入图片描述


避免使用goto

如果一定要使用goto, 推荐写法
C/C++ 你的代码风格真的是最好的吗?_第11张图片


Switch-case语句的常见不佳布局

不便于维护修改
C/C++ 你的代码风格真的是最好的吗?_第12张图片

推荐布局:
C/C++ 你的代码风格真的是最好的吗?_第13张图片


一行到底可以有多长

建议,不超过80个字符(打印的页面宽度)


断行后的后续处理

风格1
C/C++ 你的代码风格真的是最好的吗?_第14张图片

风格2
C/C++ 你的代码风格真的是最好的吗?_第15张图片
C/C++ 你的代码风格真的是最好的吗?_第16张图片

极其恶心的布局:
在这里插入图片描述

优化后的布局:
在这里插入图片描述


函数参数断行处理

风格1:对函数名进行缩进
C/C++ 你的代码风格真的是最好的吗?_第17张图片

风格2:对第一个参数进行对齐
C/C++ 你的代码风格真的是最好的吗?_第18张图片

风格3:每个参数单独占用一行
C/C++ 你的代码风格真的是最好的吗?_第19张图片


多个的赋值语句的布局

难以维护的布局:
在这里插入图片描述

合理的布局:
在这里插入图片描述


宏定义的布局

值对齐

#define ONE    1
#define TOW    2
#define THREE  3
#define FOUR   4
#define FIVE   5

不要在一行里同时做多件事情

在这里插入图片描述

优化:
在这里插入图片描述


总结:
根据文章总结出自己的代码风格,不要随意的去更改,养成良好的代码风格,写代码必须简洁明了,可以去仿造一些大神的好的代码风格,然后再根据自身情况去修改完善。

你可能感兴趣的:(c++,c语言)