当前位置: 首页 > news >正文

这样的代码才是好代码

来源:SDK.cn

链接:https://sdk.cn/news/4719

好的代码,就像是好的笑话——无需解释就能让别人明白。如果你的代码能够做到不解自明,在大多数时候,你根本无需为其配备说明文档。

好的代码,就像是一辆配备了优秀音响和杯架的汽车,这辆车在行驶到最高速度的时候,你听不到噪音,也不用担心水会洒出来。在它出现故障的时候,任何一名修理工都可以使用最常见的工具,在最短的时间里轻松将其修好。 

而坏的代码,就像是一辆向你承诺最高速度可以达到200MPH,但是音响只能播放老式的磁带,而且杯架还不稳的车。你在调整反光镜角度的时候,汽车都会突然出现故障,而且一般的修理工还修不了这辆车,必须要找专家,让专家在生产线上使用专业的工具来修理。 

好代码像是一本写作技巧高超的人所写的书

1.容易理解

2.分章明确,每一章都有清晰的主旨

而坏的代码像是刚刚学会写字的人所写的书

1.各个章节之间纷乱复杂,每一章都没有明确的主旨

2.连篇累牍的重复一句话,而且毫无缘由

3.作者在一开始设定了一些规则,但是在后面的内容中却自己不断的违反这些规则

4.突然间书里出现了一个吸血鬼,而且还能在白天出来吸血。

要想写出好的代码,你一定要牢记以下内容


可读性——不只是你,还有你身边与你合作的其他开发者

可维护性——让你的代码在修改的时候很简单

简洁性——不要让你的代码看上去毫无必要的复杂

效率性——尽可能的让你的代码获得最快的运行速度

明确性——如果你的代码能够做到不解自明,在大多数时候,你根本无需为其配备说明文档。在为方法和属性命名的时候,做到尽可能的合理。把长的代码进行拆分。不要复制/粘贴代码块。

如果你的同事不能轻松的看懂你写的代码,那么你的代码就不够好。

代码质量测试 

1.找一个从来没读过你的代码的开发者,让他看你的代码,并且让他试着说出每一个模块的作用。 

2.如果你经常需要向他进行解释,那么说明你的代码不够好。解释的次数越多,代码的质量就越低。 

3.如果你只是静静的坐在一边,他无需问你任何问题,那说明你的代码质量很高。 

当你在写代码的时候,一些信号可以证明你写的代码质量不错:

  • 代码写的很聪明,但是又不会过分的聪明

  • 无论在速度上,还是可读性上,你都使用了最佳的算法

  • 类、变量和函数都得到了正确的命名,让人看一眼就能理解

  • 休息了一个周末之后,你继续写代码,发现自己可以立刻继续之前的工作

  • 那些需要重复使用的东西总是可用

  • 你所使用的方法都很短,最理想的情况下要少于50行,最多不超过100行而且能够完美的执行单个任务

  • 在调用方法的时候,你有着足够的信息,无需在代码堆中苦苦寻找

  • 能够很轻松的在此前的代码中进行功能添加和修改

  • try/catch块的体量尽可能的小

  • 毫不费力的就可以写出单元测试

好代码都是模块化的 

假设你的项目中有三个不同的层——内层、中层和外层。你的内容不应该从中层和外层那里导入任何东西。中层不应该从外层导入任何东西 ,这样做的好处是,你可以对代码的内层进行独立测试。

“好的代码本身就是最好的说明文档。” — Steve McConnell

相关文章:

  • Python 人气王,JS 比 Java 更受企业青睐,PHP不再是最好的语言
  • 中国程序员VS美国程序员,差距在哪里?
  • 扎克伯格为提高员工工作效率,亲自做了这 26 张 PPT ,值得收藏
  • 解决智能合约安全问题的宙斯盾!
  • 区块链技术正在改变世界!
  • 跟着兜哥学“AI+”时代的网络安全
  • 机器学习、深度学习一站式搞定!
  • 5 月编程语言榜:C 再度暴涨,Python首次超越Java
  • AI计算力6年涨30万倍,多买几块GPU就能颠覆摩尔定律?
  • 福利丨好书申请免费送【5.18】
  • Bruce Eckel最新演讲:调bug就是浪费生命!放弃吧!(附完整PPT)
  • Bruce Eckel 中国行之京东技术公开课
  • 如何成为一个优秀的数据从业者?
  • 不止V神,全球最懂以太坊的人都来齐了,还差你
  • 这是第一部中国人写的关于RxJS的书
  • Android开源项目规范总结
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • django开发-定时任务的使用
  • docker容器内的网络抓包
  • ES6语法详解(一)
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java-详解HashMap
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • markdown编辑器简评
  • Spring-boot 启动时碰到的错误
  • vue总结
  • XML已死 ?
  • 安卓应用性能调试和优化经验分享
  • 百度小程序遇到的问题
  • 创建一种深思熟虑的文化
  • 工作中总结前端开发流程--vue项目
  • 设计模式走一遍---观察者模式
  • 实习面试笔记
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • (C++17) std算法之执行策略 execution
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (三)mysql_MYSQL(三)
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • ./configure,make,make install的作用
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET 的程序集加载上下文
  • .NET 依赖注入和配置系统
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET/C# 使窗口永不获得焦点
  • @RequestMapping处理请求异常
  • [ C++ ] STL---string类的模拟实现
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [CISCN2019 华东南赛区]Web4
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?