本篇文章来自腾讯课堂骑牛学院VIP笔记!
代码布局
以码取人
普通人,以貌取人
程序员,以码取人
代码风格、代码布局,比代码质量更重要!
代码风格不好,直接被出局
极端代码布局
实例:
#include <iostream>
#include <Windows.h>
#include <string>
#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 <iostream>
#include <Windows.h>
#include <string>
#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;
}
仍然是不合格的布局。
好的布局原则
要凸显程序的逻辑结构(注意,是逻辑结构,而不是外表结构)
魔鬼身材:该凸的凸,该凹的凹
计算机只看内涵,完全忽视外表
但是,代码有两个作用:
- 让计算机加工,变成可执行的软件
- 给程序员看的,用来进行维护,修改。
让人误解的代码:
int x = 1+2 * 2+5;
让人困惑的代码:
不同的审美冲突
接受他人的审美,保持自己的审美
最重要的是,审美观保持一致(代码风格保持一致)
把颜值控进行到底
不注重代码布局的程序员,不是好的程序员。
把“凸凹有致”的代码布局,作为一种信仰!
追求目标:
- 准确的表达代码的逻辑结构(不要让人误读,或者难以理解)
- 保持一致的布局风格
- 更好的可读性
- 更好的可维护性(便于修改)
布局技术
空白
空格,制表符,换行,空行
分组
把相关的语句组放在一起
缩进
括号
好的括号使用,让程序员从优先级中解脱出来
int x = 1 + 2 % 3 * 4 / 5;
布局风格
纯块结构
VB
模仿纯块结构 【个人推荐】
C/C++
指定块边界
格式
C/C++
指定块边界变种【VS推荐】
风格的选择
团队开发时,和团队保持一致。
个人开发时,风格保持不变。
风格的陷阱
段落之间要空行
错误:
正确:
If 语句的艰难选择
都有人在使用。
推荐第2种.
重要的是要保持一致。
第一种最烂.
多个条件的布局
错误
正确
避免使用goto
如果一定要使用goto, 推荐写法
Switch-case语句的常见不佳布局
不便于维护修改
推荐布局:
一行到底可以有多长
建议,不超过80个字符(打印的页面宽度)
断行后的后续处理
风格1
风格2
极其恶心的布局:
优化后的布局:
函数参数断行处理
风格1:对函数名进行缩进
风格2:对第一个参数进行对齐
风格3:每个参数单独占用一行
多个的赋值语句的布局
难以维护的布局:
合理的布局:
宏定义的布局
值对齐
#define ONE 1
#define TOW 2
#define THREE 3
#define FOUR 4
#define FIVE 5
不要在一行里同时做多件事情
优化:
总结:
根据文章总结出自己的代码风格,不要随意的去更改,养成良好的代码风格,写代码必须简洁明了,可以去仿造一些大神的好的代码风格,然后再根据自身情况去修改完善。