原标题:Java程序员都要经历哪些阶段

程序员从菜鸟到优秀的过程是需要时间,经验,不断的进阶,小编和大家一起看看每个阶段都要经历哪些成长阵痛:

没有防卫

这个阶段很快就会过去,因为有无数的书本和”前辈”在提示防卫性编码的必要性。

疯狂防卫

无论是模块之间,还是模块内部,处处充满检查,首先是检查参数,其次是检查返回值和出参。最后,给自己写的函数通通加上指示成功失败的返回码。

如果有幸参加过代码评审会,对阶段二的代码应该不会陌生,看看到底哪里不对劲?

只管汇报,不管处理,不了了之

这些泛滥的防卫性代码有一个共同的特点–只管检查汇报,不管处理。所谓的处理就是一层一层的return错误码,典型的懒政行为,老子眼界不够高,做不了决定,把皮球丢给上级机关。上级机关面对来自不同下属的千奇百怪的错误码,他也没辙,只好再丢给上上级机关。这样层层上报,人手再多也搞不定,因为用来分析错误的上下文信息已经在层层汇报中丢失了。所以别看费了好大力气汇报错误码,最后除了一死了之或者睁只眼闭只眼也没有更好的办法。

内外不辨,亲疏不分

防卫是应该的,但不应该处处为营。国界线上要有边防军巡逻,但是省界呢?县界呢?设防是有成本的,在软件上就体现为交复杂度税。同一个模块内部,假设A调用B,如果B认为A传给它空指针是一个错误,那么A应该设计为永远不会把空指针传递给B,而不是在B处设防。模块内部设防,就好比两口子同床异梦,精力都内耗了。

人格分裂,自相矛盾

设计这种代码的人一方面认为自己思维缜密,步步设防,另一方面认为自己白痴到底,所以要步步设防,左手要防着右手。左右手互搏的代码散布得纷纷扬扬,几乎无法辨认有限的功能代码。

顾头不顾尾,屁股擦不干净

只要评审得足够仔细,总能发现这些防卫性代码的漏洞,要么是文件没关闭,要么是内存没释放。这是必然的,因为一个正常人根本没脑力搞定这么多细节。考虑到天量的路径组合和逻辑的自相矛盾,你也没办法设计测试用例来验证它。这就是为什么真的一不小心命中的话,结局总是很悲惨的原因。写到这里,我想起历史上重大的安全事故调查报告,事故之所以能发生,是因为多道安全闸门同时失效,而软件故障会更加可怕,因为后面的闸门本身就是炸弹。

说了这么多,那么阶段三到底又是什么样的呢?

边界清晰,御敌于国门之外

在模块的边界处,无论别人调用你还是你调用别人,一定要明确约定调用规范,一旦违反规范,立即启用错误处理流程,不要让错误在自己的模块内部流窜。

不给错误做二传手

如果发现错误,让错误到此为止,非必要,不接力传递错误码。

当断则断,早死早超生

所有程序的正确运行都是依赖于一定的前提条件的,如果你发现外部模块不工作了,遵从系统的错误处理策略,该报异常就报异常,该立即退出就退出,重要的是搜集好现场的证据。一味的容错处理既不能解决问题还会掩盖问题,导致错误扩散,变形,拖延定位问题的时机。

和谐社会,简单单纯

在模块内部,只有不言自明的约定,没有周伯通似的左右手互搏。好比乌龟,龟壳坚硬,但龟壳内部是一个柔软的世界。

这样的代码,模块内部几乎没有用于实现需求以外的代码,很容易阅读,仅通过黑盒测试就能实现代码覆盖。返回搜狐,查看更多

责任编辑:

Java程序员的典型工作过程有哪些_Java程序员都要经历哪些阶段相关推荐

  1. 程序员薪资怎么论高级还是初级_Java程序员的薪水取决于年龄还是技术?

    1.薪资的高低与经验挂钩,但是经验的多少与从业年限没有必然的联系! 如果你工作以后,一直在别人设置的框架系统中编写代码,即使你工作再久,也依然知识一个初级程序员! 如果你工作以后,不断探索研究自己的框 ...

  2. java工作累不累_Java程序员的工作累不累?据说经常加班很辛苦?

    我是刚花了2万培训java出来的,这里分享一下我和我的同学们现在的工作情况和待遇,希望这个视频能帮到你 {!-- PGC_VIDEO:{"thumb_height": 288, & ...

  3. java程序员从笨鸟到菜鸟之_Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)...

    Java是一种面向对象的语言,这是大家都知道的,他与那些像c语言等面向过程语言不同的是它本身所具有的面向对象的特性--封装,继承,多态,这也就是传说中的面向对象三大特性 一:从类和对象开始说起: Oo ...

  4. java程序员从笨鸟到菜鸟之_Java程序员从笨鸟到菜鸟之(九十一)跟我学jquery(七)jquery动画大体验...

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog..net/csh624366188 最近一直感觉自己好忙,每天都浑浑噩噩的过着,转眼间,好像有好长时间没有更新笨鸟到菜鸟了.现在想想, ...

  5. 程序员如何在工作后找到女朋友?

    点击上方"程序IT圈",选择"置顶公众号" 关键时刻,第一时间送达! 本文来源于公众号:计算机与网络安全 https://mp.weixin.qq.com/s/ ...

  6. 橙子05-Mapreduce核心思想与工作过程

    Mapreduce核心思想与工作过程 Mapreduce核心思想与核心函数 Mapreduce核心思想 Mapreduce核心函数 Mapreduce工作过程 本文有配套视频可以在B站观看 <M ...

  7. 过来人经验!工作五年以上的UI设计师都在干什么?

    聊聊设计师的六大瓶颈期  http://www.mobileui.cn/talk-about-six-designer-bottleneck.html 0-2年,做交互设计,打基础,锻炼技能,积累经验 ...

  8. 工作五年以上的UI设计师都在干什么?

    入行两三年,继续深造.转行还是回家乡?何去何从,不妨听前辈们聊聊他们的现状吧.今天这篇问答,既有奋战一线的华为.腾讯资深设计师,也有图安逸在三线城市工作的,既有设计科班生,也有26岁才入行的非科班生, ...

  9. 程序员找工作过程的注意事项及java web面试题

    这篇文章呢,是写我在找工作过程中的一些事项,还有面试时遇到的面试题,以此总结,希望对以后的自己和看这篇文章的你有些许帮助哈哈. 在找工作过程中,我建议你先找到工作,再想着租房子的事情,不然在住大城市的 ...

最新文章

  1. Tomcat启动 java.lang.OutOfMemoryError
  2. 上传文件(Uploading Files)
  3. PAT_B_1055_Java(25分)
  4. 【Python】循环的拓展
  5. antd vue关闭模态对话框_详解打造 Vue.js 可复用组件
  6. javaweb图书管理系统源码
  7. 电脑命令教程计算机基础知识,电脑常用运行命令图文教程(DOS命令)
  8. Java 内部类与外部类的关系
  9. Windows系统下使用WCP搭建自己的本地知识库管理平台
  10. 基于MATLAB中的GUI设计的钢琴界面设计并能发声
  11. 虚拟存储器和cache的异同
  12. 业务流程管理,你准备好了吗?
  13. 【手把手教你如何从Tushare库下载股票数据,并保存在硬盘当中,第一篇数据过滤】
  14. 被Win10自带杀毒软件自动误删除的exe从这里找
  15. 抖音短视频直播电商企业号IP运营操盘商业计划书方案pdf
  16. 数字化转型定义及优秀案例
  17. JESD204标准概述
  18. 反射方程的分解、预计算BRDF
  19. 激活win7时报错,“很抱歉,程序无法在非MBR引导分区上进行激活”
  20. 新生儿不建议吃鱼肝油,这些你知道吗

热门文章

  1. Page directive: illegal to have multiple occurrences of contentType with different values
  2. stm32f407能跑linux吗_跑步能跑进医院?那我该做跑步运动吗?想健康一点太难了...
  3. mac 远程ftp服务器文件共享,mac 远程ftp服务器文件
  4. nvme通用驱动_对领域驱动设计的理解与实践
  5. c语言10个人 三向成绩,C语言入门学习精华:这样学习C语言最有效
  6. 【APICloud系列|14】xcode下载地址
  7. 异想维度 java_Java实现多字段(维度)复杂排序
  8. oracle修改某表中的顺序,oracle 数据库 , 表中字段顺序修改
  9. 怎么判断前轮左右的位置_新手开车技巧,确定前轮位置,准确判断与障碍物距离...
  10. Npm install failed with “cannot run in wd”