曾有人调侃:程序员的日常工作不就是 Ctrl+C/Ctrl+V 吗?

一语成谶,在当今网络信息大发展的时代,大量信息唾手可得,再加上我们提倡代码复用,还真应了那句:自己写代码是不可能的,重新造轮子这辈子都不会去干的

所以很多时候,代码写完了, debug 一下,诶,那里怎么有问题?哎呀删了重新复制一段试试…如此循环,效率低下的同时,代码质量不忍直视。

因此,程序员真正的日常应该是这样的:

  • 大量时间和精力耗费在无休止的 Bug 处理过程中;
  • 为了改 Bug 或扩展新功能,痛苦的学习和理解别人的代码;
  • 明知道代码这样写不合理,但当前情况下好像没什么更好的办法;
  • 代码提测后,提心吊胆,像极了当年考完试老师当着你面批改试卷时候的样子;

那么如何摆脱这种困境,写出一手漂亮且正确的代码呢?

软件质量过程无外乎需求、设计、开发、测试和维护,这五个环节紧密相连,缺一不可。

1、需求阶段,明确2点:

1)软件需求分析是对原始的业务需求进行分析、整理、辨别和归纳,最终形成有效的、系统的、明确的软件需求过程;

2)软件需求分析的产出是软件需求描述,可行的形式是用户故事

2、设计阶段,重视2个过程:

1)设计文档需求为导向,以 solid 为设计准则;一份好的设计文档通常包含系统架构、模块设计、数据设计、界面设计、异常处理以及影响和约束;

2)专家评审有助于集思广益、达成共识,以实现早发现早治疗,共同进步成长的目的。

3、开发阶段,有条不紊地进行:

1)计划制定,依照设计文档做任务划分和工作计划;

2)模块开发

  • 先基础再上层: 先开发基础模块,再开发上层模块;
  • 先接口再实现: 站在调用者角度,先定义好模块/类所有接口和参数,再实现内部逻辑;
  • 基于设计但不限于设计:开发时固然要基于设计文档来进行代码实现,但绝不能只盯着自己的代码实现,要拓宽视野,不断思考和审视设计,反向验证和完善设计;
  • 即时沟通协作: 开发过程中有疑问及时沟通讨论。
4、测试阶段,注重测试和代码评审:

1)单元测试:完成一个接口或类及时进行单元测试;不预设调用场景和前提,疯狂虐待自己写的代码;在单元测试过程中来完善模块的接口定义,代码逻辑以及代码结构;保证覆盖到自己写的每一行代码;

2)局部集成测试(核心模块):开发一些测试代码或模块来触发集成测试,这样可以促使自己在使用者角度验证组合功能的易用性,接口的合理性等;

3)CodeReview:可以不定期组织CodeReview会议。

5、维护阶段,文档的不断完善优化

在前面几个阶段,每个阶段都会有输出,比如需求阶段的需求文档、设计阶段的设计文档、开发阶段的演示demo程序以及测试阶段的测试方案等等。

转测交付给用户使用后,会有缺陷需要更新、功能需要升级优化,我们在维护的时候,同步更新这些输出,可以保证代码的不断高质量运行。


作为新时代的程序员,我们需要不断打磨自己的编程技巧,不断提高自己的编程能力,写出有灵魂的代码~

【注】文中若有任何疑问或不当之处,欢迎指出。

-EOF-

做一名有修养的程序员相关推荐

  1. 初学者内心最慌的问题:适不适合做一名码农(程序员)??

    什么样的人才适合做一名程序员.现在无论是线上还线下,都有越来越多的教育机构,速成程序员,我不否认里面可能有还不错的课,不可否认,在当今社会程序员算是一个中高收入的职业,所以越来越多的人想去当程序员,可 ...

  2. 一名90后的程序员之路(三) 工程师与码农

    提笔,已经过了三年,实在是隔得太久了.我已经忘记了我的csdn密码,最后还是通过手机找回的. 不过呢,还是那句话,无论隔了多久,我很开心,我又回来了.虽然没几个人看,但我想,我会坚持下去. 书接上文, ...

  3. 学习C语言的教材、如何成为一名优秀的C程序员、激发程序员创意的6本书、国外程序员推荐:每个程序员都应读的书

    学习C语言的教材 我的C语言是自学的,这些年看过不少教材. 下面,我对其中一些教材做个点评. 1. How to Think Like a Computer Scientist: C version ...

  4. 作为一名合格的JAVA程序员需要点亮那些技能树?

    转自:https://zhuanlan.zhihu.com/p/26035486 先看看这些程序员技能树,你掌握或了解哪些?OMG竟然有么多---震精!震精!!! 这是从450家企业的招聘信息中统计而 ...

  5. 怎样成为一名更优秀的程序员?我总结出 7 条建议,希望对你们有帮助!

    有几个人在 React 大会上向我请教一个问题--如何成为一名更优秀的程序员.人们将我视为一名非常资深的程序员,因此值得听听我的建议.我觉得可以分享一下,自己多年来在编程方面的"思维模式&q ...

  6. 怎样成为一名更优秀的程序员?我总结出 7 条建议

    有几个人在 React 大会上向我请教一个问题--如何成为一名更优秀的程序员.人们将我视为一名非常资深的程序员,因此值得听听我的建议.我觉得可以分享一下,自己多年来在编程方面的"思维模式&q ...

  7. 没有学历文凭,如何成为一名优秀的 Java 程序员?

    作为编程语言界的常青藤 Java,无论是在企业级应用,还是后端开发中,均有着无可替代的地位.而对于 Java 的入门,很多新手们不可避免的会走一些弯道.那么,如何才能有效地避开这些误区?又该如何快速实 ...

  8. 如何进阶一名有竞争力的程序员?

    前言 这段时间,又互联网寒冬了,你看消息满天飞.一瞬间,裁员的,辟谣的,很是热闹.这搞得我们程序员很难受,本来压力就大,还动不动有人在你耳边煽风点火制造恐慌.我想说:难道就不能消停消停吗?我还清楚地记 ...

  9. 假如你想成为一名测试工程师(程序员找茬师)

    假如你想成为一名测试工程师(程序员找茬师) 先扯点虚的 测试工程师是个啥? 设计用例 常说的那些个口头语 练好招数 先扯点虚的 大学扩招,经济下行,疫情肆虐... 从小到大,我们经历了无数的考试,打怪 ...

最新文章

  1. 极限学习机的matlab程序_新程序员七宗罪,新手别踩雷
  2. Maven build标签
  3. 16S+功能预测也能发Sciences:尸体降解过程中的微生物组
  4. python:argparse命令行解析模块详解
  5. PAT——1022. D进制的A+B
  6. [LeetCode]Count of Range Sum
  7. Linux设置RSA密钥登录
  8. 二陈丸配什么吃不上火_宝妈一个人带孩子是什么感觉?前三种场景,不知道是怎么熬过来的...
  9. 优秀案例|如何让网页首屏更具视觉吸引力?
  10. HTML中动态的增加和删除表格中的一行
  11. 越狱开发笔记(三)——非越狱App砸壳
  12. HTML——1.Sublime快捷键、HTML常用标签
  13. 计算机开机黑屏风扇转,显卡开机黑屏风扇在转怎么办_电脑开机黑屏风扇一直转的原因是什么...
  14. 【RFID】天线技术
  15. 高仿富途牛牛-组件化(六)-炒鸡牛逼的布局记忆功能(序列化和反序列化)
  16. 什么从什么写短句_什么在什么,在什么,什么仿写句子,怎样写
  17. Hazelcast IMDG参考中文版手册-第四章-配置
  18. 天平游码读数例题_“天平”典型题析
  19. ASTER GDEM v3.0高程数据批量下载
  20. vue框架 做后台管理系统的总结(WZ)

热门文章

  1. Flask HTML模板引擎详解
  2. 软件技术的发展(一)
  3. 华农保险 X 神策数据 OpenDay :险企数字化经营体系搭建方法论
  4. 每个人都需要良好的人生观、价值观、职业观
  5. 学生成绩排名及管理系统c语言,学生成绩管理系统__C语言版.doc
  6. SpringBoot集成WebSocket
  7. 判断一个人能否胜任团队leader,就看这一点,转载
  8. Windows mobile PPC,利用tmail.exe发送短信、彩信、邮件
  9. 15分钟看完:悉尼科技大学入选 CVPR 2021 的 9 篇论文,都研究什么?
  10. Magic Mouse鼠标滚动速度调整