(二)改掉这些坏习惯,还怕写不出优雅的代码?

本文深入探讨了编程中常见的不良习惯,包括日志记录的错误、switch语句的不当使用及资源管理的误区,旨在帮助程序员提升代码质量,撰写更加优雅、健壮的程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Code Review 是一场苦涩但有意思的修行。

上期分享,通过示例剖析编码中一些经常触犯的性能点,以及编码时常犯的一些小毛病,来告诉新手程序员如何写出健壮的代码。

咱们书接上篇,本次一起来探讨一下,该如何写出优雅的代码?

1. 编码时:少一点不行 

坏习惯一:记录日志时,缺失参数。

反例:

正解:

  • 日志打印时,占位符 {} 要严格与参数相对应,如果对应不上,按照截图示意,日志输出则不会打印 queryString 的参数,会直接输出 {},但是某些版本下会出现空指针异常。
  • 说一句废话:图中的 isVarfiy 是什么鬼?莫非是 isVerify,单词好好拼,千万别拼错,不然易被后人拍砖。

坏习惯二:记录日志时,缺失占位符 {}。

反例:

正解:类似的这种问题,多数程序员都犯过。记录日志时占位符少,而参数值多,日志输出时想打印的参数,日志中却没有打印。

如上面截图中代码所示,想输出请求的 queryString,但是由于缺失对应的占位符 {},则不会打印到日志中。

坏习惯三:使用 switch 时,缺失 default。

正解:

  • 采用 switch 时,当所有 case 都不匹配时,会走 default 逻辑。为了程序更完成、更优雅,在一个 switch 块内,都必须包含一个 default 语句并且放在最后,即使它什么代码也没有。
  • 说一句废话:截图中的代码格式,尤其是 break 前的分号,你能忍受吗?

坏习惯四:使用 switch 时,缺失 break。

反例:

正解:

  • 在一个 switch 块内,每个 case 要么通过 break/return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;
  • 注意 break 是退出 switch 语句块,而 return 是退出方法体。

2. 编码时:多一点不行 

毛病一:看似判 null 很严谨,实则多余。

反例:

正解:这应该是吃过空指针的亏,刚 new 出来的对象,二话不说又判断对象是否为 null,真是多余的判断。

这么写并不能彰显代码很 new B(),反而使代码有失大雅。

毛病二:担心对象使用出现空指针,就疯狂 new。

反例:

正解:创建对象而没有使用,除了白白的浪费内存空间,如果在高并发情况下,效率、内存占用可想而知。

难道上面代码是为了 new B(),百思不得其真解。

毛病三:多分支对应功能却是一模一样。

反例:

正解:

解惑:功能相同的分支进行合并到一起,代码确实能简化不少,优雅不少。

毛病四:闲置不用的对象,到处都是。

反例 1:

反例 2:

正解:闲置不用的对象,到处都是,若留着就是耗内存,而且影响雅观,不用的变量、代码段建议删除。

3.寄语写最后 

常在河边站哪有不湿鞋,金无足赤人无完人,再牛逼的团队,编码都会有出 Bug 的时候。近期微信公众号推出了一个专辑功能,而我迫不及待的想体验。

谁成想,当我点击创建专辑时,输入专辑名称「码农心声」等信息,然后点击保存,却发现列表页面出现了多个「码农心声」,而且赶紧截了个图,不知道是不是个 Bug? 

But who cares?多出来的直接删除就行啦,又不影响使用。

好了,编码中易犯的那些臭毛病,本次就谈到这里,不知道有多少条是触动了你的心弦,希望有则改之。

一起聊技术、谈业务、喷架构,少走弯路,不踩大坑。会持续输出原创精彩分享,敬请期待!

推荐阅读:

(一)改掉这些坏习惯,还怕写不出健壮的代码?

### 如何在达梦数据库中设置模式为大小不敏感 要在达梦数据库中实现大小不敏感的配置,可以通过调整数据库初始化参数以及合理设计 SQL 查询方式完成。以下是具体的方法: #### 1. 初始化数据库时禁用大小敏感 当通过 Docker 安装并初始化达梦数据库实例时,可以利用环境变量 `CASE_SENSITIVE` 来控制数据库的大小敏感性。将该值设为 `0` 即可关闭大小敏感功能。 ```bash docker run \ -e CASE_SENSITIVE=0 \ # 关闭大小敏感 -e UNICODE_FLAG=1 \ # 启用 Unicode 支持 -e CHARSET=1 \ # 设置字符集 -e PAGE_SIZE=16 \ # 数据库页面大小 -e LD_LIBRARY_PATH=/opt/dmdbms/bin \ -e INSTANCE_NAME=dm8 \ # 实例名称 -d dameng/database:latest ``` 上述命令中的 `-e CASE_SENSITIVE=0` 是核心部分,用于指定数据库运行时不区分大小[^2]。 #### 2. 表对象默认转换为大 如果未显式开启大小敏感模式,则达梦数据库会自动将表名和字段名统一转换为大字母形式存储。这意味着,在执行查询操作时无需考虑原始定义中的大小差异,只需按照大的约定书即可正常访问数据[^3]。 例如: ```sql SELECT NAME, AGE FROM STUDENT; ``` 即使实际创建的是小表名 `student` 和字段名 `(name, age)` ,以上语句仍能成功执行,因为内部已标准化为全部大处理[^1]。 #### 3. 使用双引号强制保留原样命名 需要注意的是,一旦某张表或者某个字段被用带双引号的方式声明过之后,再对其进行引用就必须严格匹配原来的大小状态,并且继续包裹于双引号之中;否则将会引发错误提示找不到对应的目标实体[^4]。因此建议除非必要情况下才采用这种方式设定特殊的名字格式,否则一般推荐让系统自行管理好这些细节从而简化日常维护工作量。 综上所述,要使整个模式变为完全忽略字母case的区别对待的话,最简单有效途径就是在最初部署阶段就明确指定了非sensitive选项即`CASE_SENSITIVE=0`,这样后续所有的交互过程都不必额外顾虑这方面因素影响效率与准确性了。 ```python # Python连接示例代码片段展示如何基于已经配置好的无Case区别的DM Server来进行基本的数据检索活动。 import pymssql conn = pymssql.connect(server='localhost', user='sa', password='your_password', database='testdb') cursor = conn.cursor() try: cursor.execute("SELECT name, age FROM Student") # 不需关心 student 或者 Name/AGE 的确切拼法 row = cursor.fetchone() while row: print(f"Name={row[0]} Age={row[1]}") row = cursor.fetchone() finally: conn.close() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值