架构师速成-怎样高效编程

今天看见有个csdn的征文大赛。谈谈怎样高效编程。正好之前有些感触。先沉淀下来。

引子

赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境。那枪浑身上下,若舞梨花;遍体纷纷,如飘瑞雪。

赵云是全部历史人物中我最喜欢的一个。假设放到现代,他走了it的道路,一定能够成为一个编程高手。为什么?

事实上古时打仗也是一门技术活。须要有勇有谋。跟it没有什么太大的差别。打仗要修身、修技、修器才干左冲右突,如入无人之境,相同做it也要修身、修技、修器,才干高效编程。如入无人之境。

高效编程的修炼

何谓修身、修技、修器?

  • 修身。古今都是修炼自己的体魄和思维。使自己体魄强健,思维敏捷
  • 修技,古代修炼自己的武艺和兵法,现在修炼自己的设计方法、模式及设计技能
  • 修器,子龙左手青釭剑,右手亮银枪。跨下白龙马,一身白盔白甲,帅到爆炸!现在我们左手xmind。右手eclipse。uml在脚下,也是无比潇(ku)洒(bi)。

待修到山花烂漫时,需求丛中过,片叶不粘身。

修身

修身是一个非常大的话题,要讲个几天几夜了,所以我们就先略过。当然修身之后,能够从思维的高度上确定大的方向,可是大家的看了题目也不太会关心怎样修身,so pass!后面省略十万字,我可真够高产的(稿费不要省略啊,我不怕麻烦)。

修技

古时修技都是有秘笈。并且必须有独门功法历尽千辛万苦才干修炼成功。现在好了。有非常多书和视频,还有我这样的让人醍(提)醐(壶)灌顶的好教程,所以你仅仅须要少吃一点苦就能够练成了。我算算啊-------你大概历尽999辛9999苦就能够了,看少了1点吧。

  • 不明真相群众:揍他,揍他小舅子
  • 作者:亚美蝶,揍我不行,揍我小舅子能够。
  • 作者:哎呀。轻点
  • 作者:呀,轻点
  • 作者:轻点
  • 作者:点
  • 不明真相群众:KO
  • 作者:请让我讲完,55555


修技大概分为:

  • 面向对象、面向过程设计方法(心法)
  • uml设计语言(秘笈)
  • 设计模式、重构、xx最佳实践(先辈实战经验)
  • 单元測试(对打练习)

等修炼到10成功力,才干够继续修炼终极秘笈架构模式。否则会走火入魔、oom。

  • 不明真相群众:等一下,我们在讨论高效编程,你跟我们讲什么面向对象,你疯了吧!揍他,揍他小舅子
  • 此处同上,省略100字。
  • 作者:请让我讲完。55555

事实上看到题目我首先想到的也是编程工具的使用。以及快捷键的使用。后来我发现那仅仅占我浪费时间的5%-10%,真正浪费我们时间的是:

  • 老板说:哎呀,我们方向错了,我们又一次搞一个方向吧。(产品、码农、測试心中下起了大雪,好冷,好累。我要屎了,砍死他.......看在钱的份上。先饶你一条狗命)
  • 产品说:哎呀,需求不是这个样子的,我们应该改成这样.........(码农心中一万仅仅草泥马跑过)
  • 測试说:哎呀。这么多bug。快来改(測试心中歧视的看着你。菜鸟,切!

  • 码农说:哎呀,这样地方设计不合理,我们须要重构。哎呀,这样地方if else好多,我晕了。哎呀,这地方出异常了。哎呀,.....(哎你妈个头啊!你有完没完啊!)
  • 不明真相群众:好像非常有道理的样子,先饶你一条狗命
  • 作者:谢谢大侠

事实上我们看看这些问题怎么来解决:

  • 老板的问题,我先不解释了。老板最英明。(老板在后面看着呢)。《精益创业》《精益创业实战》,好像有点修身的味道。
  • 产品的问题,有些错误的地方,你在设计时会感觉不正确,那就问题所在。可是有些就是方向性的问题,这能够归结到第一个问题。

    (产品说:这个锅甩的好)《head first 面向对象分析与设计》《领域驱动设计》

  • 測试的问题,单元測试起码保证最基础的代码的正确性,上面集成測试。功能測试。系统測试才有可能正确。《单元測试之道》《測试驱动开发》
  • 码农的问题。先辈的经验先学会。你就不会有那么多须要哎呀的地方。《重构》《Head first 设计模式》《代码大全》,《Effective java》《代码整洁之道》

秘笈已经放在后面了。请大家笑纳。

  • 不明真相群众:好像还不错,看在秘笈的份上先饶你一条狗命
  • 作者:谢谢大侠
  • 不明真相群众:等等,终极秘笈没有给
  • 作者:sorry。各位大哥,《企业架构模式》,《大型站点技术架构》

修器

有小说讲到高手已经不须要好的武器,一片叶子,一根枯枝。都能够分分钟秒掉一片人。

还有人谣传,最牛逼的开发者仅仅使用文本编辑器。巴拉巴拉,一个操作系统开发出来了。

我仅仅问一个问题,你用不用电器,你开不开车?

假设用,那就继续,假设不用,那就闪开,骗子,你怎们看到我的文章的。

人活着的目的就是为了让很多其它人的获得很多其它的自由,时间自由,財务自由。人身自由。

开发工具的目的是为了。让你更快的完毕一些反复的繁琐的事情,让你有时间去享用你的自由。所以尽情的使用工具,工欲善其事。必先利其器。

  • 不明真相群众:好伟大
  • 作者:我仅仅是说说而已,不要打我。

要高效,必须把最经常使用的工具修炼到极致:

  1. 操作系统。尽量选择苹果、Ubuntu,window次之,当你用命令行爽呆的时候就明确了。当然假设用windows,尽量使用快捷键操作。

  2. 开发工具,eclipse 快捷键。统一的格式,重构功能 ,findbug。checkstyle
  3. 自己主动化编译公布。使用hudson进行定时自己主动化打包公布
  4. 其它工具,xmind 快捷键
  5. 时间管理,番茄工作法 控制时间
  6. 好的框架。定义好一个好的框架,能够节省大量开发时间。详细内容详见我前面讲到的框架。
  7. 代码生成器,输入uml设计的类图,自己主动生成相关的类,对于须要持久化的对象,能够实现从前到后的增删改查的代码。

实战

产品获得了一个用户需求给到我,我一般是这样做的:

  1. 分析需求的合理性,并非全部需求都是合理的,须要积极发现当中问题。发现的问题跟产品讨论。假设全部问题都解决掉,才进行下一步。假设后面的开发建立在一个错误的需求上,全部开发都是然并卵。
  2. 进行分析设计,至少形成uml的用例图和类图。

    对于关键复杂逻辑,确定能否够通过设计模式解决。

    复杂流程须要画出流程图。假设状态变化较多。还须要画出状态图。在uml设计时,仍然会发现需求的问题,此时仍须要跟产品确定,直至全部问题解决掉,才进行一步。

  3. 编码实现。依据类图自己主动生成相关代码。省去了自己一个个再敲一遍的时间,前后端增删改查等反复逻辑都已经有了,仅仅须要写详细的业务就ok了。
  4. 编写单元測试,对于自己定义代码,必须编写单元測试。这样后期改动代码或者进行集成測试时,才会比較顺畅。

  5. 进行findbug。checkstyle自己主动检查,系统自己主动化公布,假设出现故障邮件通知。
  6. 自測。自己实现功能后。先依照需求自測一般。保证正确性。

  7. 提交測试,发现bug及时改动。基本做到日结。

  8. 自己主动化公布上线。

当然中间会尽量节省各种时间:

  1. 快捷键操作
  2. 番茄工作法,设置不被打搅时间,目不转睛的投入编码
  3. 3次以上反复的事情,就考虑实现自己主动化,比方 公布,代码检查,代码生成
  4. 代码规范严格遵守,最优实践严格遵守


团队高效

事实上编码不是一个人的事情,团队协作是不可缺少的。

团队尽量採用例如以下管理方式:

  1. 需求、设计集体參与,不须要再每人解说
  2. 设计后进行分工,假设有新人就採取新老结合的结对编程,对复杂的代码也採取结对编程。
  3. 推行结果导向,从产品。需求,设计。开发等。不要白白浪费时间做无结果的事情
  4. 代码规范严格遵守。最优实践严格遵守
  5. 规范流程,不断磨合各个环节人员。达到丝般顺滑
  6. 人员互备,不会出现单点

祝福

上面是我做软件以来的一些感悟,当然一千个人眼中有一千零一个哈姆雷特。每一个都会有最适合自己的方法。希望大家都早日修成自己的高效编程之道。

8月8日是一个好日子!

                                                                            2015年8月8日于阿里巴巴西溪园区


原文地址:https://www.cnblogs.com/mfmdaoyou/p/7324688.html