代码整洁备忘(一)

无聊在看《代码整洁之道》,找到了一些自己以前没有注意的地方,在这里记录下来,备忘一下。

目前看完了第九章。

1.重复很多的代码是不好的,需要仔细考虑去掉无用的重复

2.变量,函数,类等的命名要足够精确精简&易于搜索

3.函数尽可能的少用参数(3个以内),&不要向函数内传递bool,因为这明确的说明了这个函数干的不是一件事!函数的职责应该是单一的。函数应该尽可能的短小,过长的函数是不好的。

4.注释能不用就不用能少用就少用。能用好的名字说明的问题就不要用注释来说明。标记作用的注释,应该在它完成作用之后立刻删除掉。无用的代码,应该及时删除掉,怕删错了还有git。

5.缩进大括号之类的格式看团队要求,随着团队走。相互之间联系越紧密的函数距离应该离得越近,变量的定义要有统一位置(比如类的开始位置)

(ps.前面几条感觉还好,基本符合要求。。。)

6.数据结构暴露的是数据内容,它本身并没有行为。对象暴露的是行为隐藏数据。举个例子,游戏中角色,血量是数据,攻击是行为。针对数据结构编程的是面向过程编程,面向过程编程便于添加新的行为(函数);针对对象编程的面向对象编程,面向对象编程便于添加新的数据类型(多态继承),而不便于添加新的行为(在父类中添加一个virtual函数,子类都要override一下)。需要注意的是,两种模式并没有谁优谁劣,需要根据我们的需求来进行选择,but,不要混在一起用,会让你的代码非常乱。&不要”开火车“用a.b().c().d()这种方式来调用,这种代码风格非常不好。

(ps.表示干过混用这事,手动捂脸)

7.测试代码应该独立于工程代码;你的测试能够在任何环境下通过及时更新测试代码;测试代码能够自行检测通过与否,而不应该是我们人工看log。

时间: 2024-10-03 13:27:02

代码整洁备忘(一)的相关文章

C#常用代码片段备忘

以下是从visual studio中整理出来的常用代码片段,以作备忘 快捷键: eh 用途: 类中事件实现函数模板 private void MyMethod(object sender, EventArgs e) { throw new NotImplementedException(); } 快捷键: xmethod 有4个 用途: 类中公有静态方法的函数模板 public static void MyMethod(this object value) { throw new NotImpl

github提交代码——步骤备忘

打开git客户端,cd到要上传的项目文件夹下.   输入git init命令,回车,用来在当前项目的目录中生成本地的git管理库,我们可以发现在当前目录下多了一个.git的隐藏文件夹.   输入git add . 命令,回车,将项目中所有的文件添加到仓库中.如果想添加特定文件,把.换成对应的文件名就行了. 注意add后面有一个点,若是提交单独的文件,则可输入文件名.   输入git commit -m "first commit" 命令,本次提交的注释,双引号中的字符自定义修改.  

定位代码【备忘二】

_asm    {        call l        l :        pop eax            mov eval, eax    }    wchar_t buf[MAXBYTE] = { 0 };    _ltow_s(eval, buf, 16);

linux 相关代码路径备忘。

https://github.com/torvalds/linux/blob/master/net/core/dev.c?utf8=%E2%9C%93#L7736昨天 11:35 https://github.com/torvalds/linux/blob/master/net/core/sock.c?utf8=?#L56110:27 https://github.com/torvalds/linux/blob/master/net/core/dst.c?utf8=%E2%9C%93#L1541

[PHP] 商品类型规格属性后台管理(代码流程备忘)

实现界面 涉及到四张表,type(商品类型表),type_spec(商品类型规格关联表),attribute(商品属性表),attribute_value(商品属性值表) 新建基控制器BaseController.class.php,向上抽取出来的公用方法 BaseController.class.php <?php namespace Admin\Controller; use Think\Controller; class BaseController extends Controller

P2.JS之距离约束(DistanceConstraint)备忘

关键代码: 1 //以下是地面和墙壁的代码 2 //下 3 var body = new p2.Body({ mass: 0, position: [0, -5]}); 4 var shape = new p2.Plane(); 5 body.addShape(shape); 6 world.addBody(body); 7 8 //右 9 body = new p2.Body({ angle: Math.PI / 2, mass: 0, position: [10, 0]}); 10 body

【代码备忘】火狐浏览器插件xpi自动从网站下载安装的代码

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&

ffplay for mfc 代码备忘

之前上传了一个开源播放器工程ffplay for mfc.它将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下,并且使用MFC做了一套界面.它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出.此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等:以及一些码流分析功能:视频解码分析和音频解码分析. 详细的软件使用就不仔细介绍了,本文简单介绍其中比较重要的模块的流程.以防长时间不看的话忘了~ 软件信息:

【代码备忘】VC判断自己窗口的另一种方法

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 FindWindow就不说了,这说 的是另一种:GetProp 代码也差不多: 查询... HWND hWndPrevious = ::GetWindow(::GetDesktopWindow(), GW_CHILD); while (::IsWindow(hWndPrevious)) { if (::GetProp(hWndPrevious, _FLAG)) { if (::IsI