谈到修养,你们也许会立马想到优雅的气质谈吐,优秀的品质道德,其实归根结底我觉的修养是“内在的美”的一种外在呈现。咱们都很喜欢有修养的人,可是绝大部分人却难以达到这种修养,咱们也想作一个有修养的人,可是社会环境及生活环境和自身的劣根性却让绝大多数人作不到纯纯粹粹的有修养。不过有一点咱们必需要作:那就是尽可能让本身有修养。
那么编程修养是什么?
举一个反例,就拿我最近接手的一个企业级的后台网络服务程序来讲,这个程序承载了整个公司核心产品的核心技术,可是当我拿到源代码时,我却有不尽的失望,甚至有些愤怒,也以为对公司来讲是一种幸运。是的,不能否认的,你给你们展现的是你能够承受得起10万级的访问量,能够正常的运转公司的业务。可是内在的呈现上,给人的第一感受就是杂乱和缺少专业性。
我对此程序见解以下:
1.各类文档一无全部;
2.上万行代码就在两个cpp文件中完成,其中的main方法甚是可怕,四个重要功能逻辑的实现几乎全在其中,多达2000多行;
3.不少逻辑并未考虑到执行不成功的状况就继续执行下面的逻辑;
4.大量使用全局变量,而且有些并未在全局使用;
5.做为一个庞大重要的后台服务程序,没有一套完善的日志系统;
6.对于多达几十个上百个的功能逻辑居然没有一套完善的测试系统;
7.“don't repeat yourself"这个金率在程序中未任何体现;
8.既然用c++来编写程序,几乎未面向对象的使用,甚至连STl都不多见;
9.代码注释风格,命名风格杂乱,未使用的代码逻辑还有一堆;
这些就是我对这个程序的感悟,我认为以个人观点来看以上都是没有编程修养的体现。当然,能够拿这个程序已经很稳定的跑了多久多久,并且没有出过业务上的差错或者当时时间有多么紧来对上述问题开脱。可是做为一个程序员的咱们仅仅是为了完成产品的需求功能?从商业上来分析这种观点没错,一个程序代码写得多么好,配套设施多么完善,体现的多么专业,可是不能创造市场价值等于这程序就是堆”垃圾“,可是咱们也不能写出”垃圾“同样的程序。我认为,但凡垃圾的程序产生的效益都是短暂的,并且是运气的;
我下面以个人观点的分析一下可能对产品形成的不良影响:
1.从维护上来看,若是维护人员是这个程序的始创者,好办些,毕竟这程序即便再乱。维护者毕竟了解它,能够相对比较快的完成维护工做,可是你们不知道有没有这种经历,小时候为了记全笔记有时候会写草字,可是下次本身再看时却很费劲,即便程序始创者维护这样的程序也会费些时间吧。那对一个起初对程序一无所知的人呢,我想必定会多花不少不应花费的时间去消化这个程序的逻辑和业务。这显然已经影响到了维护成本。
2.从定位问题上看,你们都知道的,对于一个服务端的程序,一旦出问题会影响到千千万万的客户端,既然这样,咱们就要能快速准确的定位出问题所在,而后迅速解决它,使其损失达到最小。对于不便于现场调试的状况,最有效的方式就是在程序运行时有一个稳定,高效,完善的日志系统。这样大部分状况下咱们能够经过日志记录的一些数据或者信息提示再结合自身的代码定位到问题。
3.从功能上看,最严重的我认为就是不少逻辑没有考虑到执行失败的状况就继续执行下面有依赖的逻辑,是的,确定你会反驳我“他确定是成功的,为何会失败呢,我是按照指定的路径读的文件,我就没发现过这个API调用失败过“,我不得不得奉劝这种人一句,你该看看《代码大全》了,其中有一章防护式编程会教育你的。
4.从做为一个程序员的职业道德上来看,你写出这样的代码只是为了给机器读?你要记住,对于机器来讲你的代码只是二进制,你写的再烂机器只看到0和1,而你写的代码是要给别的程序员看的,去维护,去改进,去移植的,因此请你有些职业道德,别给别人增长没必要要的负担。
说到这里,我想确定有些人会以为委屈,由于”咱们是新手“。这个缘由我放在下面谈,由于我以为新手写出这样的程序很正常,我也曾经写过让如今的本身以为很垃圾的程序。另外一个缘由就是“公司给的时间太紧,我只好匆匆写完”,我以为这只是一个方面,我必需要吐槽一下如今的不少IT公司,再也不注重一我的是否是能写出优秀的代码和维护一套科学的产品流程,也再也不注重产出的代码的质量和产品的高标准,而是把衡量一我的和产品的标准彻底放在了实现的功能和创造的市场效益上,我也知道这是市场规则,可是请尊重那些把代码和产品不只仅当作赚钱工具的人,由于他们在写代码作产品时更想把他当作一个艺术品,会仔细设计雕磨,会让他尽可能完美。还有,对于新手,容许他们犯错,可是请不要把他们犯的错用在公司的核心产品和技术上,由于这种成本有些大了。
因此我想对广大和我同样热爱技术的程序员说,咱们不只仅要作一个能实现功能作出产品的程序员,还要作有编程修养的程序员。也建议你们读读我对开展一个项目的薄见,
大家的团队是怎样组织开展大型项目的?