(1.3).[11章]变量命名核对表,如何核对是不是好的变量名[精华](本章结束)

变量命名的艺术
本文探讨了变量命名的重要性,并提供了一系列实用的指导原则。包括如何选择准确、具体的名称,以提高代码的可读性和维护性。

坚持一件事确实不容易,从3月11日发第一篇阅读笔记,当时想着每天都读半小时,把自己理解和认为有有的写下来,主要是对自己的总结鞭策,如果能为他人带来些作用,那更好。

今天阅读《核对表:变量命名》,是个很好的内容,就像代码走查25疑问一样,通过核对表,我们可以检查核实自己所取的变量合是不是个好变量名。

命名的一般注意事项:

  • 名字完整并准确地表达了变量所代表的含义吗?
  • 名字反映了现实世界的问题而不是编译语言方案吗?
  • 名字足够长,可以让你无须苦苦思索它的意义蚂?
  • 如果有计算值限定符,它被放在名字的最后吗?
  • 名字中用Count或者Index来代替Num了吗?

如果以上问题你都回答了是,或者大部份回答了是,那么恭喜你。

命名规则

  • 规则能够区分局部数据、类的数据和全局数据吗?
  • 规则能够区分类型名、具名常量、枚举数据和变量名吗?
  • 名字为了可读性而加以格式化了吗?

短名字

  • 代码用了长名字吗(除非有必要使用短名字)?
  • 是否避免只为了省一个安符而缩写名字的情况?
  • 所有单词的缩写方式都一致吗?
  • 名字能够读出来吗?
  • 避免使用容易被看错或者读错的名字吗?
  • 在缩写对照表里对短名字估出说明吗?

为特定类型的数据命名

  • 循环下标的名字有意义吗(如果循环长度超过5行或者出现嵌套循环,那么就应该使用i、j、k之外的其它名字)?
  • 所有的”临时“变量都重新命名以更有意义的名字了吗?
  • 当布尔变量的值为真时,变量名能准确表达其含义吗?
  • 具名常量是根据它所代表的抽象实体而不是它所代表的数字来命名的吗?

要点

  • 代码阅读的次数无无多于编写的次数。 所以编码时不要赚麻烦,图一时之快,不细致考虑命名。要确保你所取的名字更侧生于阅读方便,而不是编写方便。
  • 好的变量名是提高程序可读性的一项关键要素。
  • 名字要尽可能地具体。

到此,关于变量命名的内容就结束了, 通过这段时间的阅读,确实也对工作产生了帮助,在命名上进行了调整,提高了代码可读性,变量名、方法名取得好,注释都可以少写很多。这个系列已经发了五篇,对bolg发文、排版,也熟悉了些,收获还是不小。

由于是阅读笔记,大多内容只是摘抄或进行了精减,如需看完整内容,请看原书。

### Makefile 构建规则与逻辑分析 该 Makefile 定义了如何从源文件构建可执行程序 `programming_test_1.3`。其构建逻辑包括目标规则、依赖关系、编译命令以及清理规则。 #### 目标定义与链接规则 Makefile 的第一行定义了目标 `programming_test_1.3`,它依赖于 `programming_test_1.3.o`、`test_case1.o` 和 `func.h`。链接命令使用 `gcc` 将目标文件 `programming_test_1.3.o` 链接为可执行文件 `programming_test_1.3`。 ```makefile programming_test_1.3= programming_test_1.3.o test_case1.o func.h gcc programming_test_1.3.o -o programming_test_1.3 ``` 该规则明,如果 `programming_test_1.3.o` 或 `test_case1.o` 有更新,或者 `func.h` 被修改,则会触发重新链接生成可执行文件的操作。 #### 编译规则 接下来的规则定义了如何从源文件编译生成目标文件。其中,`programming_test_1.3.o` 依赖于 `programming_test_1.3.c` 和 `func.h`,使用 `-c` 选项进行编译,生成对应的目标文件。 ```makefile programming_test_1.3.o: programming_test_1.3.c func.h gcc -c programming_test_1.3.c ``` 同样地,`test_case1.o` 的构建规则如下: ```makefile test_case1.o: test_case1.c func.h gcc -c test_case1.c ``` 这些规则明,源文件 `.c` 文件经过编译后生成对应的目标文件 `.o`,并且当头文件 `func.h` 发生变化时,相关的源文件会被重新编译。 #### 清理规则 `.PHONY: clean` 声明 `clean` 是一个伪目标,示它不是一个实际的文件,而是用于执行清理操作。其命令如下: ```makefile clean: rm -f *.o *.d *log ``` 该命令会删除所有 `.o`(目标文件)、`.d`(依赖文件)以及以 `log` 结尾的文件,确保项目可以重新构建。 #### 构建流程分析 当用户运行 `make` 命令时,默认会构建第一个目标 `programming_test_1.3`。构建过程如下: 1. 检查 `programming_test_1.3.o` 是否存在,若不存在或依赖文件(`programming_test_1.3.c` 或 `func.h`)被修改,则执行编译命令生成该目标文件。 2. 检查 `test_case1.o` 是否存在,若不存在或依赖文件(`test_case1.c` 或 `func.h`)被修改,则执行编译命令生成该目标文件。 3. 使用 `gcc` 链接 `programming_test_1.3.o` 和 `test_case1.o`,生成可执行文件 `programming_test_1.3`。 如果用户运行 `make clean`,则会删除所有临时生成的编译文件和日志文件,确保项目处于干净状态[^1]。 #### 变量与自动变量的使用 尽管该 Makefile 没有显式使用变量定义,但可以通过引入变量来简化规则。例如,可以将编译器和编译选项提取为变量: ```makefile CC = gcc CFLAGS = -Wall -Wextra ``` 然后可以使用这些变量来替代硬编码的命令,提高可维护性。 此外,该 Makefile 没有使用自动变量(如 `$@`、`$<`、`$^`)来简化命令,如果使用自动变量,可以将链接命令改为: ```makefile programming_test_1.3: programming_test_1.3.o test_case1.o $(CC) $^ -o $@ ``` 这样可以提高命令的通用性和可读性。 #### 总结 该 Makefile 实现了基本的构建流程,包括源文件编译、目标文件链接以及清理操作。其结构清晰,适用于小型项目。然而,对于大型项目,建议引入变量、模式规则和自动变量来提高可维护性和可扩展性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值