前言:

Long long ago,my boss 推荐 me a book called 《Unix编程艺术》,本人易脑热,回家就京东了一本,然后简单看了眼目录就放在地板上挂灰了。几个月过去了,看到《功夫》里边老乞丐推荐给少年《如来神掌》这本书我顿时想回来翻着看看。本书第一章讲述了软件设计的17个原则,被我称为程序员的降龙十八掌,少了一掌在哪儿呢?如果你看过星爷的《苏乞儿》你就明白第十八掌是什么了!

降龙第一式:模块

模块,这两个字蕴含着独立的意思,想想我们玩过的积木、拼图,每块木头和小图都是模块,这些模块通过简单的凹槽拼合在一起构成了一个坚固的大厦或者美丽的图画。一个复杂的软件就是一个大厦、一幅图画,而构成复杂软件的元素不应该是杂乱无章的代码,而是高内聚、低耦合的模块!

降龙第二式:清晰

清晰胜于机巧,代码需要让人看懂,这也是高级语言所致力的方向;代码结构应该清晰,不能为了一个“高级”点的算法或者用法牺牲清晰度。《重构》有一个原则对于清晰度比较实用,那就是写小函数(20行以内)然后给小函数起一个一看就知道这个函数是干嘛的那种名字。这样就不会出现你自己写的代码过一段时间之后你就不记得了这种事情了!

降龙第三式:组合

程序之间应该能可靠的彼此通信,同一个程序内的接口应该有统一的API,对于跨设备的通信尽量面向文本流。

降龙第四式:分离

前端后端要各司其职,不同的功能不要写在同一个接口里,保证接口的单一职责。

降龙第五式:简洁

设计要简洁,复杂度能低则低。不能为了技术上的虚荣心理而去做花哨的软件,这种软件复杂度高不利于维护。实际上所有的复杂系统都是一点点成长得那么复杂的,而不是一步到位生下来就那么复杂,没有经历过那么多挫折、没踩过该踩的坑上来就想当一个经验纯属的高手是不可能的。阿里非一日建成!

降龙第六式:吝啬

写小程序不要写大程序,大程序复杂度高,按照《重构》去做吧!

降龙第七式:透明

软件系统的透明性是指你一眼就能看出软件是在做什么和怎么做的,保证透明可以根据《重构》中的接口简洁原则,让输入输出参数尽量少和清晰!

降龙第八式:健壮

这是最简单但也是最难实现的一个原则。程序员最容易犯的错误应该就是边界条件检查NPE问题,另外异常情况的解决办法也是容易出错的痛点。这个就看意识了!

降龙第九式:表示

把信息叠入数据,让代码更朴实,在设计的时候应该将代码复杂度转移到数据中去

降龙第十式:通俗

最易用的程序就是那些用户需要学习最少的程序,接口设计避免标新立异,你是一个厨师那么你就应该专心做饭,而不是偶尔做裁缝。

降龙十一式:缄默

程序应该安静的干活,而不是输出一些别人不需要的冗余输出!保证输出的都是别人需要的,别唠唠叨叨!

降龙十二式:补救

宽容的收,谨慎的发,出现异常马上退出并给出足够的错误信息!

降龙十三式:经济

宁花机器一分,不花程序员一秒。教会机器做一些低层次的编程工作,比如使用mybatisGenerator,各种自动化工具等等!

降龙十四式:生成

避免手工写代码,尽量让程序去生成程序,即准确又可靠还节约时间!

降龙十五式:优化

优化之前应该有原型,而不是上来就写一个完美的最优的代码,没有学会走就要跑肯定是会摔跟头的。用书中的话说就是,还不知道瓶颈在哪就匆忙的优化,牺牲透明性和整洁性而追求速度和性能会让你后续付出惨痛的代价!优化之前先确保能用。《重构》里教我们要先写出代码,边写边重构!

降龙十六式:多样

问题的最优解可能不止一个,不要相信不二法门,广泛采用多种语言、开发的可扩展系统和用户定制机制!

降龙十七式:扩展

面向未来编程,扩展原则可以参考设计模式!

降龙十八式:KISS

Keep It Simple、Stupid!别再追求所谓的高大上了,软件设计的重要思想就实用。

降龙十八掌-程序员篇相关推荐

  1. mac好用的软件推荐之程序员篇

    mac好用的软件推荐之程序员篇 前言 write:2020/06/21 updated: null 持续更新 免费软件推荐 appcleaner 一款用于能够最大程度删除软件的软件.功能描述好像有点拗 ...

  2. Wwise 快速上手指南: 程序员篇(v2016.1)

    Wwise 快速上手指南: 程序员篇(v2016.1) https://gameinstitute.qq.com/community/detail/107700 Wwise 快速上手指南: 程序员篇 ...

  3. Git 学习笔记——程序员篇

    文章目录 关于 Git Git 背后的故事 基本概念 术语中英文对照 安装Git客户端 Linux 平台安装 Windows 平台 使用 Git 客户端生成数字证书 从远程库克隆项目 创建本地版本库 ...

  4. 如何成为一名全职创作者——程序员篇

    哈喽大家好,我是咸鱼 今天跟大家分享一篇文章,这篇文章的作者 Gergely Orosz 是一名程序员,他从 Uber 辞职以后,就当起了全职创作者 他通过写文章.卖课程.做视频等谋生,今天这篇文章是 ...

  5. 大学生生涯人物访谈(程序员篇)

    访谈内容: l         问:平常在工作方面,您每天都做些什么工作?您是否满意这样的工作状态? l         答:主要的工作就是软件开发,也就是写程序,不过还有其他很多的工作要做,我们的公 ...

  6. 正能量系列 女性程序员篇

    FROM:http://www.cnblogs.com/shenyisyn/archive/2013/02/17/2914806.html 注:本文使用第一人称,原型取材于周围同事或民间或作者自己,不 ...

  7. [正能量系列]女性程序员篇

    注:本文使用第一人称,原型取材于周围同事或民间或作者自己,不一定全部代表作者本人,欢迎大家提供您的正能量素材,发送至shenyisyn#gmail.com 温馨提示:本文可任意转载,建议注明出处,如实 ...

  8. 【程序员篇】友谊的小船说翻就翻……

    概述:论如何毁掉和一个程序员的友谊-- ● 当你想约程序员朋友吃饭-- ● 当你以为程序员是修电脑的-- ● 当你问程序员有没有对象-- ● 当你觉得就差一个写代码的-- ● 当你又要改需求的时候-- ...

  9. 如何用一句话证明你是程序员?41 个答案揭晓!

    作者 | 王晓曼 出品 | 程序人生 (ID:coder _life) 我们常说术业有专攻,也常感叹隔行如隔山.即便你在所处的领域学得不怎么样,对别人来说也可能是天书级别.之前有#一句话证明你是什么专 ...

最新文章

  1. Xcode 6制作动态及静态Framework
  2. PHP服务器脚本实例,Shell脚本实现的一个简易Web服务器例子分享_linux shell
  3. ASP.NET Core 启动方式(Hosting)
  4. matlab图像信息熵交叉熵,【机器学习】信息量,信息熵,交叉熵,KL散度和互信息(信息增益)...
  5. 3个提升Python运行速度的方法,很实用
  6. pc网站支付html,jsp 支付宝pc网页支付
  7. 数据库学习笔记---SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)
  8. atos命令符化号crash文件
  9. 编写一个APPlet,再随机的位置上画出几个随机大小的矩形。
  10. 像A + B一样容易
  11. linux下搭建radius服务器,CentOS下Radius服务器搭建
  12. 微信小程序——仿写京东购物商城带源码
  13. IOS 10.3.3 越狱
  14. gateway解决过滤器response返回中文乱码
  15. NVIDIA安装驱动不成功的解决方式
  16. 测试工程师职位要求汇总
  17. 自学IT和接受IT培训两者的优缺点分析
  18. 计算机视觉---opencv人脸识别
  19. android通过百度语音合成实现文字转换成语音(TTS)详细教程?
  20. 张鸿洋 视频 android,PageStateManager 在张鸿洋的 LoadingAndRetryManager 的基础上改写,优化 api,封装 @codeKK Android开源站...

热门文章

  1. 下划线命名法 vs 驼峰命名法
  2. 动态规划之硬币面值组合问题
  3. AI技术实践|用腾讯云录音文件识别让无字幕视频自动生成字幕
  4. Matlab bsxfun函数
  5. Win7不激活会怎么样 Win7可以不用激活吗
  6. Java UT用例实践记录
  7. 第一个模板类(templetclass elemType class xxxxx)
  8. 百家号视频怎么消重批量处理去重消重去水印去logo软件视频MD5修改工具(短视频去重) 自媒体如何解...
  9. Java打印杨辉三角
  10. 什么是CSM(Certified Scrum Master) 敏捷教练认证?