前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码的坏味道

代码的坏味道

作者头像
gaigai
发布2021-03-06 14:09:37
7040
发布2021-03-06 14:09:37
举报
文章被收录于专栏:Windows开发Windows开发

系统学习Windows客户端开发

Martin Fowler的《重构》一书中介绍了许多安全小重构的方法,同时这本书也介绍了什么样的代码需要重构,作者专门有一章<代码的坏味道>专门作了介绍。其中有一些坏味道的代码片段很常见,我为此作了整理,读者尽量不要写出这类代码,看到这类代码时考虑是否可以优化它(如何优化就去阅读《重构》这本书)。

重复代码

同一个代码片段/代码结构在不同的地方出现,当需要修改的时候,得修改多处。

过长函数(函数体过大)

函数的实现复杂,代码行数太多,不易理解和维护。

类太大(太多成员变量&成员方法)

类的职责无法用一句话来描述,类过于复杂,很难维护。

过长参数列(函数的参数个数太多)

函数的参数个数多,一来容易弄错参数的顺序,二来代码行会显得太长。

项目提前约定好代码行最大字符数,现在的IDE编辑器都支持显示代码宽度标准线,超过标准线的代码就能被闻到坏味道。

一种变化引起多个类修改

一个小需求的实现或变化,需要涉及到多个类的修改,此时脑中要浮现出是否可以进行类合并的想法。

函数的实现用到某个类的许多数据

考虑该函数是否可以作为这个类的一个public方法。

switch语句

考虑是否可以用多态实现

冗余代码

没有被使用的函数、函数的参数、类等,去除它,不要假设将来会用,除非你使用假设驱动开发方法。

过多的注释

每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数中,并以其用途(而非实现手法)命名。

注释不是越多越好,当你需要感觉撰写注释的时候,请先尝试重构,试着让所有注释变成多余。

重复使用一个临时变量

代码可能定义一个临时变量 temp,用来存储周长的计算结果,然后又用来存储面积的计算结果。请改成定义两个变量 perimeter和area,分别存储计算的结果。

对输入参数赋值

主要是影响代码的清晰度。

下面代码,对函数参数inputVal赋值,改成定义一个新的临时变量:result = inputVal,对result赋值。

数组,但元素不是同一类

数组的元素类型虽然是字符串,但第一个元素存储名字、第二个元素存储住址、第三个元素存储手机号,不是同一类东西,优化成用类实现。

硬编码魔术字

魔术字不具备解释性,看到数字5不知道什么意思,但是看到 const int APPLE_PRICE_YUAN = 5,就很清楚知道是苹果价格。

真正的编程高手是先为人写代码,再为计算机写代码。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Windows开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档