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

  • 可读性——不只是你,还有你身边与你合作的其他开发者
  • 可维护性——让你的代码在修改的时候很简单
  • 简洁性——不要让你的代码看上去毫无必要的复杂
  • 效率性——尽可能的让你的代码获得最快的运行速度
  • 明确性——如果你的代码能够做到不解自明,在大多数时候,你根本无需为其配备说明文档。在为方法和属性命名的时候,做到尽可能的合理。把长的代码进行拆分。不要复制/粘贴代码块。

一、什么是好代码?

CUPID 就是从特质的角度来定义的,它尝试用一组助记词来指示好代码所具备的一组特质,并希望这组特质是最重要的特质。

  • 可组合特质(Composable):主要体现在精巧的接口、可体现意图的代码、最小依赖三个方面;
  • Unix 哲学(Unix):一个程序应该做一件事,并将其做好;
  • 可预测性(Predictable):1. 与期望一致的行为;2. 输出确定的结果;3. 内部行为可观测;
  • 符合惯例的(Idiomatic):通常团队会自己定义一些惯例,比如用什么工具,如何缩进等。借助各种语言的代码检查;
  • 基于领域的(Domain based):代码应该用问题空间的语言来写,这样就能让代码的读者更容易的理解。问题空间语言即领域语言。

二、好代码怎么写?

在编码前,需要做好需求分析和系统设计。而这两项工作是经常被大量软件工程师忽略或轻视的环节。

在编码时,需要编写代码和编写单元测试。对于“编写代码”,读者都了解;而对于“编写单元测试”,有些软件工程师就不认同了,甚至还有人误以为单元测试是由测试工程师来编写的。

在编码后,要做集成测试、上线,以及持续运营/迭代改进。这几件事情都是要花费不少精力的,比如上线,不仅仅要做程序部署,而且要考虑程序是如何被监控的。有时,为了一段程序的上线,设计和实施监控的方案要花费好几天才能完成。

三、去哪找好代码?

读论文的时候会附带代码,或者去github这样的网站也有很多开源项目,大家可以找想要的方向或者感兴趣的代码看。

  • github:https://github.com
  • codeforge:http://www.codeforge.cn
  • codesoso:http://search.codesoso.com
  • 开源中国:https://www.oschina.net/

四、看哪些书?

  • 《重构》: https://book.douban.com/subject/30468597/
  • 《Clean Code》: https://book.douban.com/subject/4199741/
  • 《代码大全》: https://book.douban.com/subject/1477390/
  • 《编写可读代码的艺术》: https://book.douban.com/subject/10797189/
  • write-readable-code: https://github.com/biezhi/write-readable-code
  • 《Effective java 》: https://book.douban.com/subject/3360807/
  • 《 The Clean Coder》: https://book.douban.com/subject/26919457/
  • 《架构整洁之道》: https://book.douban.com/subject/30333919/
  • 《人月神话》: https://book.douban.com/subject/1102259/
  • 《领域驱动设计:软件核心复杂性应对之道》: https://book.douban.com/subject/5344973/
  • 《代码的未来》: https://book.douban.com/subject/24536403/
  • 《深入浅出设计模式》: https://book.douban.com/subject/1488876/
  • 《软件架构设计:大型网站技术架构与业务架构融合之道》: https://book.douban.com/subject/30443578/
  • 《微服务架构设计模式》: https://book.douban.com/subject/33425123/

最后再推荐两个相关的文档:

  • 阿里巴巴 Java 开发手册 :https://github.com/alibaba/p3c
  • Google Java 编程风格指南: http://www.hawstein.com/posts/google-java-style.html

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

什么是好代码?怎么写好代码?相关推荐

  1. 用Python代码自己写Python代码,竟如此简单

    用Python代码自己写Python代码,竟如此简单 Python作为一门功能强大且使用灵活的编程语言,可以应用于各种领域,具有"无所不能"的特质. Python甚至可以代替人,自 ...

  2. 天天写业务代码?写业务代码中的成长机会!

    写业务代码有成长机会吗?关于这个问题,答案非常肯定:必须有成长机会.对于大部分公司而言,能够写底层代码或者中间件代码的人总是有限的,写业务代码会面临更高的复杂度. 这里分三个层次来看其中的成长机会. ...

  3. win7滑动关机代码bat_写一行代码实现滑动关机电脑

    ياخشىمۇ سىلەر؟بۈگۈن بىز بىر قۇر كود يىزىپلا كومپىيوتىرنى سىيرىپ ئۆچۈرۈش(滑动关机) نى ئۈگۈنىمىز ! نەتىجە: ...

  4. Idea中Maven控制的多模块项目运行不到最新的代码,写的代码不生效问题解决方法记录。

    文章目录 写在前边 我的情况 解决办法 原因分析 写在前边 这个方法不一定适合所有情况,兄弟遇到这种情况首先需要保持冷静.可以先参考我们的情况是否一致,再决定是否看下去. 我的情况 idea版本:20 ...

  5. html中幻灯片代码怎样写,HTML代码简介幻灯片.ppt

    HTML 开发 HTML 标记的格式组成: HTML 文档的结构 HTML头部信息(Head) HTML头部信息(head)里包含关于所在网页的信息.头部信息(head)里的内容,主要是被浏览器所用, ...

  6. html左右上下代码怎么写,html代码记录--公告字体上下左右走马灯

    size=3> direction=up height=200 width=213 scrollAmount=1> align=left>你知道吗, 大海为什么是蓝色的? 因为大海里 ...

  7. java删除修改的代码怎么写_Java代码增删查改完整流程

    packagecom.dao;//结案报告 importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.Resu ...

  8. 阅读代码和修改别人代码的一些技巧以及注意事项

    作为刚刚走上工作岗位的fish,都要熟悉前辈们留下来的代码.这段时间是fish最痛苦的时间同时也是最轻松的时间.痛苦是因为要看大量的代码,同时要慢慢从学生到社会人士的转变(*-*,再不能睡懒觉了,不能 ...

  9. Python写的代码打包成.exe可执行文件

    Python写的代码打包成.exe可执行文件 1. 安装pyinstaller 2. [在线生成icon](http://www.ico51.cn/) 3. 打包命令 pyinstaller -i x ...

  10. 转程序员,都去写一写前端代码吧

    转自: http://www.oschina.net/news/36972/programmer-write-frond-end-code 你可以认为我是一个极端的人,就像有许多人专注于自己的领域而不 ...

最新文章

  1. 存储过程 psal emp.sal%type是什么意思
  2. java并发之TimeUnit
  3. 面试题18: 删除链表节点:删除链表中重复的节点
  4. jquery锚点连接划动滚动条,再也不用a标签name 了
  5. 计算机网络(七)-物理层设备
  6. ORA-01858: 在要求输入数字处找到非数字字符 13行
  7. 与专门团队一起持续交付
  8. 浅谈XSS攻击的那些事(附常用绕过姿势)
  9. srve0255e尚未定义要怎么办_我的可转债中签了,该怎么办?
  10. mORMot Js对象解析 Json 实例
  11. HDU 4539 郑厂长系列故事——排兵布阵 —— 状压DP
  12. 微信,QQ抢红包软件原理解析
  13. Java初级程序员面试总结(五)--Redis篇
  14. 移动创业者,这么多免费资源,你不要?
  15. 介绍一个很好的英语学习软件——单词风暴
  16. wampServer虚拟主机配置
  17. 解决vue中双击事件会触发两次单击事件问题
  18. 为什么程序员做外包会被瞧不起
  19. android 系统秒表,android自定义秒表(精确到0.1s,带计次功能)
  20. 神州信息与北京市地方金融监督管理局、房山区人民政府签署战略合作

热门文章

  1. github+hexo搭建个人博客
  2. 微型计算机连接电视如何配置,设置画面显示参数,一分钟让电视画面更清晰!-分辨率设置...
  3. 【Java_SSM_kuang】
  4. Polar Si9000使用方法----阻抗匹配软件
  5. 江西单招计算机专业大学排名,2018年江西高职单招院校名单有哪些
  6. 《计算机网络》(第8版)第五章 运输层 知识点总结
  7. 加加魔兽助手Ver7.65去广告方法!
  8. 抓手,赋能,勾兑,落盘,组合拳!你听过这些互联网黑话吗?
  9. 可免费下载的最新人民日报分词语料库(NEPD)发布(转载)
  10. magento会员邮件找回密码连接无效