何为优秀的代码

引言

优秀代码的评价标准是什么?

一直以来这个问题我都没认真思考过。今天刚好看到了一篇讨论该主体的文章,深有感触,特此记录一下自己的感悟。

结论

如果自己写的代码符合现阶段自己心中优秀代码的评价标准,那么就可以认为代码是优秀的。这里引出2个问题:1. 怎么定义自己心中优秀代码的标准;2. 为什么加入现阶段这个限定词。

问题1解答

俗话说:“一千个读者就有一千个哈姆雷特”,每个人对优秀代码的评价标准都不会完全相同。针对这个问题,我们可以把社会上被大部分人认可的标准来作为自己的评判依据,当然这些标准都是具有一定程度抽象性总结,具体还要看自己现有的专业技能水平和领悟力。如果自己编程过程中达到来这个水平,那么就可以任务自己的代码是优秀的。

问题2解答

编码水平会随着个人时间和阅历的增长而提高,以此推论无论今天我们写出来多么优秀的代码,过段时间再次审阅的时候多多少少都会发现有待提高的部分。这时不能说之前的编码不够优秀,而是现阶段自己对优秀的认知提高了,是一种可喜的进步,概括为一句话就是“重构的意义和重要性”。

延伸

下面主要记录一下哪些标准可以作为优秀代码评价依据。
1. 良好的可读性和可维护性
2. 代码运行的高效性和健壮性
3. 注重代码的质量
4. 优秀的文档风格
5. 谋定而后动

良好的可读性和可维护性

变量和函数命名要遵守:1. 命令可以望文生义;2. 不要出现错误拼写;3. 符合通用的命令规则,比如驼峰法等。

函数编写要简洁明了,尽量采用声明式编程,做了什么比怎么做更能表达意图。里面不要有复杂不清的逻辑,如果有一定要想办法优化。一个函数只赋予该层次上面一种职责,否则需要按层次进行抽象和重组。
类和接口的设计一定要具有合理的层次性,这里需要优秀的设计和抽象能力。既要考虑到现在的业务情况,也要给未来业务的增加和改动留出改动空间。

代码运行的高效性和健壮性

高效性非常重要,在一般的系统里体现不出来,可是在做高性能服务里就是一个核心指标,这个需要我们知道每个代码执行耗时,避免产出没有意义的中间变量,一般耗时比较多的有序列化、反射等

健壮性是指代码的设计考虑到了各种边界情况和可能产出的异常。异常分2类:1. 调用第三方可能出现的异常;2. 自身产出的异常。

注重代码的质量

质量主要包括测试模块的完整和良好的注释风格。测试需要涵盖函数、模块各种可能状态,测试代码里不要出现print之类的语句,应该调用assert来验证结果。在重要的类和函数的开头应该写明对应的功能,但是函数的逻辑就不需要写了,因为好的函数可以一眼看出里面的执行逻辑,如果注释也写了代码的执行逻辑那么就会违反dry原因。

优秀的文档风格

写文档和写代码并不冲突,文档分2类:1. 对内文档;2. 对外文档。对内文档是为编写代码服务的,良好的文档对代码有促进作用,代码只需简单的完成文档里的内容就好。对外文档是给外面人员调用的,需要简单易用,里面目录层级易于被他人接受,文档需要有统一的编写风格。

谋定而后动

写代码前一定要想清楚需要做什么,最好事先进行纸上谈兵,写画好架构和里面的类以及类里面需要实现的函数,和各种调用依赖,从写伪代码开始,不断细化到实现代码,中间多次重审代码,有了足够的把握在编码!

原文地址:https://www.cnblogs.com/guanyong/p/10990518.html

时间: 2024-10-08 07:48:05

何为优秀的代码的相关文章

何为优秀的机器学习特征 zz

提供好的特征是机器学习任务中最重要的工作,那么何为优秀的机器学习特征?以及如何高效地组合这些特征? 以二分类问题为例,好的特征具有很好的区分性.例如学习任务是区分两种不同类型的狗:灰猎犬(Greyhound)和拉布拉多犬(Labrador).假设有身高和眼睛的颜色两种特征.一般而言,灰猎犬的平均身高要比拉布拉多犬要高一些,而狗的眼睛的颜色不取决于够的品种,因此可以认为“身高”这个特征就比“眼睛颜色”这个特征更有用,因为“眼睛颜色”这个特征没有告诉我们任何信息. 虽然灰猎犬的平均身高要比拉布拉多犬

优秀的代码的设计和组织架构

优秀的代码的设计和组织架构一块相同逻辑的代码在两处甚至多次用,就要考虑能否抽取到一处来,进行统一下:一个功能存在变数,就要考虑能否支持后续扩展,把变与不变抽取隔离,把变化的尽量可配置化:一块代码就执行一次,那么就要考虑是否要在启动的时候进行执行:一个实例就创建一个,那么就要考虑是否要在启动时直接通过单例模式提前创建好:只要存在网络调用,就一定要设置超时,这样异常时可以快速返回,保证服务的基本可用,不然都是耍流氓:如果开发的功能是一个工具(就是说按照工具的定位来开发的,那么就很容易知道哪些是变化的

优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案

简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接收.消息处理器的注册与调用以及设置消息处理的回调. 就像项目的名称一样,它是连接UIWebView和Javascript的bridge.在加入这个项目之后,他们之间的交互处理方式变得很友好. 在native code中跟UIWebView中的js交互的时候,像下面这样: [cpp] view

14款优秀的代码展示网站

本文列出的这些网站可以分享和展示你的代码.它们都提供在线预览功能,所以别人可以看到你的代码如何运行.它们有时候也被称作“代码广场”或者“沙箱”. 它们不仅仅提供简单的代码展示功能,还提供很多代码协作和实际编程过程会用到的功能.例如,当你需要别人帮你调试源代码的时候,可以使用这些网站分享你有问题的代码,然后把链接分享给帮助你的人.这使得他们可以方便的查看你的源代码并提供解决方案. 1.CodePen 在CodePen上,你可以演示被称作 pens 的代码.Pen 由 HTML.CSS和JS组成.C

前端优秀特效代码收集

不管是css3的还是js.jquery的 见到过的比较好且觉得有用的代码 1. 手机右上角圆角动画导航代码 2. jQuery背景可滑动的导航菜单代码

[译] 如何在React中写出更优秀的代码

目录 我们先来看 Linting 利用组件模块性.复用性和组合性 propTypes 和 defaultProps 知道何时创建新组件 组件 vs 纯组件 vs 无状态函数组件 无状态函数组件 纯组件 使用 React 开发工具 使用内联条件语句 尽可能使用代码片段库 React 本质 - 学习 React 是如何工作的 快速回顾 在React中写出更好代码的9条建议:学习关于 Linting, propTypes, PureComponent 等. Rajat S · 2018 年 4 月 1

优秀的代码应该如何分层

说起应用分层,大部分人都会认为这个不是很简单嘛 就Controller,Service, Mapper三层.看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,Controller做的逻辑比Service还多,Service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗.这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦. 一.背景 一个好的应用分层需要具备以下几点: 方便后续代码进行维护扩展: 分层的效果需要让整个团队都接受

如何编写优秀的代码?

前言:我只是在练习画 思维导图,提取一篇文章的重点 原文链接:http://news.cnblogs.com/n/549233/

这些优秀的主流代码编辑器,你用过多少款?

这些年来,编写代码本身已经成为一种艺术.现在,有大量的编程语言可供开发者选择使用,从汇编语言到 Ruby 和 Python.尽管对于给定的项目有许多编程语言可供选择,但有一件事是亘古不变的,每个开发者都需要一个代码编辑器来写代码. 一个好的代码编辑器不仅仅是一个简单的文本编辑工具,这是发生奇迹的地方,开发者编写的代码会转化为更大的项目的可用组件.鉴于这一重要性,难怪开发者会对与他们日夜共处的代码编辑器如此挑剔.每个开发者都希望拥有一个快速.易于使用且功能均衡的代码编辑器. 每个代码编辑器都会声称