谈谈代码质量问题
我们编写代码, 假如代码有语法错误,那么编译器将会拒绝通过编译, 假如代码语法正确, 那么编译器会通过编译, 因此, 判断代码是否编写正确, 可以拿代码是否能通过编译器编译作为衡量的标准。 我们编写的网站,也可以用访问的承受量来判断性能的好坏, 类似于每秒能承受一千次, 还是一万次, 或者是十万次, 都可以作为网站的性能指标。 另外,比如说一个算法的最坏时间复杂度, 是常数的, 还是线性的, 或是对数的, 都是算法性能好坏的衡量指标。 然而,代码写的是好是坏的定义,虽然不是凭喜好完全主观判断的结果,但也没有一个量化的衡量标准。你吐槽别人程序性能有问题或者代码逻辑有漏洞会出错都没什么问题。 但是, 如果去吐槽别人代码写的不好, 质量不行, 估计十有八九会遭到对方反唇相讥, 你凭什么说不好? 谁定的标准?这个就有点像厨师做菜, 只要这个厨师的水平不那么差, 那做出来的菜肯定有人夸赞, 但是也会有口味比较刁的顾客不喜欢,毕竟一样米养百样人, 每个人的口味都是不同的。 然而,对于厨师自己来说,他肯定也有一套进阶指导方针, 如何超越从前, 做出更美味的佳肴来符合更多人的味口。其实代码质量的好差和菜做的是否好吃从某种角度来说有些相似, 评价它们好坏与否肯定会带上一些主观色彩, 但是也有衡量的指标, 只是这种指标比较模糊, 比较难以琢磨罢了。
此外, 对于不明真相的领导来说, 代码质量好差是最无关紧要的事情了。 如果是网站访问速度慢, 影响到用户正常使用,明显是不能忍的,大棒子砸下来,程序员只能加班加点去优化。但是如果是代码质量有问题呢! 优化? 开什么玩笑, 大家都这么忙,需求都做不完, 哪有闲工夫去整这种没有成果产出的事情, 再说了, 现在代码跑的好好的,要是优化出事情锅谁来背?所以说,从技术实现本身以外的角度来看, 代码写的好坏与否的确是最无关紧要的事。
然而,在程序员的眼里, 代码质量又显得无比重要了, 烂代码总是让人深痛欲绝。 我们生活中有很多一交性的设备, 一次性筷子, 一次性杯子, 一次性套子, 但是却没有写完用过就扔的一次性代码, 写出来的代码需要长时间维护那是常态, 对于程序员来说维护旧代码所花的时候可能要多于生产新代码的时间, 因此, 代码质量对于程序员来说是无比重要的, 直接影响工作效率的因素。 但是正因为代码质量的界定是比较模糊和难以琢磨的, 所以掌握到其中的要决也是比较困难的, 怎么入门?如何精通?从来没有标准化的学习方案可以参照, 不同的人有不同的做法。 而且,关于代码质量的书籍,市面上数之不尽, 哪本好?哪本差?先看哪一本?再看哪一本? 都是没有确定性答案的。 学校里有教C++的, 有教Java的, 有教算法的, 有教数据库, 但是从来就没有教如何写的一手好代码的,为什么? 因为根本没有一套标准的方案可供参考使用。
想知道我最终想表达什么标新立异的观点吗? 哈哈,其实我什么观点也没有, 只是让你们看了一堆废话。 不过接下来,我想在这个公众号只写提高代码质量的文章, 并且把这个公众号的名字给改了, 改成「教你撸一手好代码」这个名字怎么样?不知道会不会太长了。
最后, 感谢你能耐心看到结尾,如果能顺便点下赞, 留个言, 或者分享到朋友圈, 那再下真的感激不尽。另外,如果你是单身女程序缓,那么可以留下你的微信号,有机会本人必当倾囊相授手把手教写代码。
- DedeCMS全版本通杀SQL注入漏洞利用代码及工具
- Android实现滑动刻度尺效果,选择身高体重和生日
- 浅谈开源web程序后台的安全性
- Web漏洞演练平台 – ZVulDrill
- Android内存泄漏终极解决篇(上)
- 走近科学:我是如何入侵Instagram查看你的私人片片的
- 在线手写识别的多卷积神经网络方法
- 苹果发布OS X 10.9.2更新,修复SSL漏洞
- Android内存泄漏终极解决篇(下)
- 利用Volatility查找系统中的恶意DLL
- 雪人行动:利用IE10 0day漏洞的APT攻击剑指美国军方情报
- Android开发:最详细的 Toolbar 开发实践总结
- 关于yubikey对web应用的杞人之忧
- 利用旧版Android漏洞的E-Z-2-Use攻击代码已在Metasploit发布
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- “抽象类”到底抽不抽象?实例对比一看便知!
- C#索引器的实现、索引器和属性的异同对比,这些技能你get到了嘛?
- 我竟然用它搞懂了王者荣耀的技能释放机制!【C#委托】
- 使用docker-compose 搭建 lnmp
- Java接口也有坑?不容忽视!
- 值得练手的JavaGUI项目——色彩调节器的实现【附完整源码】
- 自定义短标签
- Python简单又好玩的项目推荐!【持续更新】
- 使用 JsDelivr作为CDN 加速服务
- Java利用TCP协议实现客户端与服务器通信【附通信源码】
- 增加标签云代替原有标签和分类效果
- 新增搜索功能
- 利用实例巧妙区分“抽象方法”和“虚方法”!
- windows 右键菜单的添加和移除
- Windows 查找被占用端口并结束程序