代码简洁之道的笔记--2
上次说到了命名和注释;做好命名和注释能让代码看起来清爽易懂
函数
- 短小 短小是函数的第一规则, 更短小是第二规则; if, else, while 语句其中的代码块应该只有一行; 函数代码行数建议: 不要超过二十行;每行建议150个字符左右;
- 一个函数只应该做好一件事并且对应一个抽象层级 就是说: 一个函数的实现,最好只做一件事,两件事分两个函数来做; 在另一个函数调用抽象了一层的函数时,该函数最好不要再在下面写大段的代码;
- 使用描述性的函数名,长而具有描述功能的函数名更能让人理解,一眼就能知道该函数的作用,比写一句注释来的简洁;
- 函数参数的个数,最理想的参数数量是0,接下来是1,2,3;除非有足够的理由,否则不要使用三个以上的参数;三个以上的参数;其测试用例组合是非常庞大的;
- 标识参数:如果入参中包含布尔类型的参数,就是等同于一个函数做两件事:
function initOrder(flag)
{
if(flag == true)
{
//normalInit
//...
}
if(flag == false)
{
//specialInit
//...
}
}
上述函数一个函数做两件事;
改进如下:
function initOrder(flag)
{
if(flag == true)
{
this.normalInit();
}
if(flag == false)
{
this.specialInit();
}
//or flag == true ? this.nomalInit():this.specialInit();
}
function normalInit()
{}
function specialInit()
{}
上面这种虽然也还是使用布尔类型作为入参,但它只做一件事:就是判断要做哪件事,然后调用相对应的函数;如果可以的话,该判断可以直接放在拿到flag的地方;
- 分隔指令与询问:
函数要么做什么,要么回答什么,两者不可兼得。函数应该修改某对象的状态或是返回该对象的相关信息,两样都干就容易混乱。 - 使用异常替代返回错误码:
错误处理代码能从主路径中分离出来,阅读的时候,可以直面主路径内容。 - 别重复自己:
重复可能是软件中一切邪恶的根源,要学会复用代码;许多原则和实践都是为控制与消除重复而创建; - 别返回null,也别传递null:
除非特殊需要,别反悔null/undefined,也别传递null/undefined,因为一旦返回值存在null,就意味着每一个调用的地方都要判断、处理null。否则就容易出现不可预料的情况;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)