zoukankan      html  css  js  c++  java
  • 构建之法读书笔记二

    在学习这么多之后,软件工程给我的印象是:用户需求的框架+朴实代码的填充。
      那么在写软件的时候一定要用傻瓜式的代码了么?显然不是,高级算法能极大地减少时间复杂度与空间复杂度,只是放在大型工程里,需要注意数据与其他模块的关联性。现在我们先讨论什么是“好软件”。一般情况下我们认为没有BUG的软件就是一个好软件,但显然一个没有任何bug的软件极难,甚至是不可能写出来,那么退而求其次,我们可以从多个方面去评估软件,书中列出了4个方面:用户满意度,可靠性,软件流程质量,可维护性。由于我们是按用户的需求去设计,因此有很多地方需要开发人员和用户去沟通协商,因此,我认为:好软件=技术+沟通。
      软件工程项目通常是一个开发团队去做,但不可因此忽略个人技术,这里就提到了一个重要的流程:单元测试。我对自己写的代码从来都是写完一个功能,随便写几个样例扔上去简单测试一下,至少书中那样详细的单元测试流程,我没有做到。但不可否认,这样的测试十分重要。闷头写完所有代码,测试最终结果时报错,当你回顾所有代码时你会感到非常头疼,倒不如一步一脚印慢慢走。此外,在开发项目上,还有一个回归测试,这个在我的理解看来,大概就是更新软件后出了bug,倒退到原来没出bug的情况。最后在流程上的重点,注释是关键,毫不夸张地说,现在让我去看之前写过的,没有注释的项目,若非时间短还有些印象,我要看懂也有些麻烦。注释是写给别人看的,尽量写得简练一些。
      怎样成为一个合格软件工程师,基础的技术功底一定要过硬,在通过阅读书籍和老师传授的经验之后,软件工程师要有一定的思想基础,我们是工程师,要讲究分析设计,而不是单纯的“码农”。先谈谈技术功底,衡量技术总归需要项目来看,一个软件开发的工作量和质量的衡量标准有4点:项目/任务大小;花费时间;质量如何;是否按时交付。分摊在个人身上的话,最直观的也就是完成时间了。以前我一直觉得,只要在最短时间内完成,就是最好的,但显然我考虑得少了,首先你要保证缺陷不要太多,“re-work”的时间是记入完成时间内的,同时“re-work”过多也从侧面上反应了开发者的技术不严谨,还有就是时间的测量方式,之前提到过软件上讲究稳定性,一个程序员是否有稳定且扎实的技术功底,要根据他完成工程时的时间方差来看。是的,除了直观的时间结果之外,还要通过方差来看看这个程序员是否“稳重”。

  • 相关阅读:
    amazon海淘+CUL中美速递转运详细教程(免税)
    单页 Web 应用概述
    JavaScript JQuery SPA Frameworks
    win环境的apache下Virtualhost 设置
    Windows下创建.htaccess文件的N种方法
    ARP欺骗攻击与防护介绍
    静态构造函数(转载)
    SQL从表内容条件满足查询
    SQL数据库开发—精典
    如何学好C++语言(转载)
  • 原文地址:https://www.cnblogs.com/2506236179zhw/p/14237238.html
Copyright © 2011-2022 走看看