首页 > 其他分享 >对软件工程的理解

对软件工程的理解

时间:2022-09-26 12:11:19浏览次数:47  
标签:代码 理解 程序 程序员 软件工程 开发 我们

对软件工程的理解

软件工程就是经过时间考验、实践证明的思想和方法论的集合,是一门经验学科。

对于一个稍微大型的工程我们不仅仅只要求数据结构简洁、算法实现快速。因为在我的理解下,软件工程有一个更重要的核心--人。不论是软件开发者还是使用者都是人,所以我们在设计软件、甚至设计开发模式的时候都需要考虑更多的东西:

  • 可读性。现在来看无论是数据结构和算法都几乎由代码描述。而一个工程不可能只是写一次就甩手不干。我们在开发时要为未来的维护者考虑(不论自己还是他人),所以市场上出现了许多的开发规范,这些开发规范大部分面向普遍的程序员。在规范出现的同时程序员们也开发了各种帮助开发者遵守规范的程序xxx-lint。不仅仅是代码可读,逻辑也需要可读,所以推荐大部分人在实现复杂功能时添加一些注释,来表明代码段的功能和状态;而过多的注释反而会使代码变得冗长降低了可读性,所以找到一个注释量的平衡点也是一个很考验水平的工作。

  • 可扩展性。软件工程不像是土木工程,楼只盖一次下次几乎就是拆了。软件工程更像是乐高玩具,一层一层往上搭,哪天不高兴了把楼顶拆了继续搭。所以我们需要在代码里留一些可以拆的“楼顶”,或者可以扩展的“插槽”。怎么留应当尊重需求,过度的可扩展性很可能带来性能问题与抽象过度问题。

  • 跟上时代。一个版本下的程序员大都用同一个套路写代码,而这些代码可能会被下个版本所抛弃。此时我们不应该去学习兼容旧的技术,而是要去用新的技术(保证功能的情况下)替代旧的技术。新的技术不仅会带来性能、安全的提升,也会带来新的设计模式,能够节约开发部署时间。我们要酌情选择新技术版本,要以需求为主。虽然跟进版本是好事,但更新的最主要目的是增强代码、降低未来的人力成本。

  • 自动化测试。当我们实现一个算法时,随便跑一个程序就可以测试结果是否准确。但对于一个几十个接口,复杂状态的工程项目,把程序跑起来也很难断定结果,甚至程序都无法在本地跑起来。如果没有自动化测试,我们在添加新功能或修复bug时就会很“心虚”,不确定是不是解决了问题。而在有测试的情况下,我们不仅能保证程序正确,也能在复杂的问题出现时排除错误,快速定位错误。

  • 编写日志。在复杂的系统里,日志不仅仅用于定位自身的错误,也会经常用于协助其他系统定位他们的错误。

标签:代码,理解,程序,程序员,软件工程,开发,我们
From: https://www.cnblogs.com/jyyyyyyy/p/16730440.html

相关文章

  • 软件工程师:意外之旅(如何学习编码和找到工作)
    软件工程师:意外之旅(如何学习编码和找到工作)如果(in_a_rush):如果你上车迟到了,需要完成你最近的副业,或者(上帝保佑)和一个真正的人(不是人工智能)约会,我会为你节省一些时间。TL;......
  • 软件工程的理解
          在学习这门课程以前,我一直认为软件工程是学习如何制作一个软件。但现在,我的看法有了改变。软件工程从客户的需求开始,到理解和定义用户的需求,再到实现、管理,同......
  • Docker Registry的理解(翻译的官方文档)
    DockerRegistry|DockerDocumentation是什么无国界的、高可扩展性和服务器端的应用,用于存储和发布Dockerimage。它遵守Apachelicense,并且在Github上公开了源码。为......
  • lambda函数和map函数的理解和使用
    lambda函数在说lambda函数前,先来想一下平时的在Python中怎么定义和使用函数的,简单的如下:defsum(x):x=x+5returnxprint(sum(8))输出结果都晓得:13上......
  • 原型链的理解
    使用构造函数创建一个实例<script>functionPerson(age,name){this.age=agethis.name=namethis.sing=function(){console......
  • ExecutorService、Callable、Future实现有返回结果的多线程原理解析
    原创/朱季谦在并发多线程场景下,存在需要获取各线程的异步执行结果,这时,就可以通过ExecutorService线程池结合Callable、Future来实现。我们先来写一个简单的例子——publ......
  • 我对软件工程的理解
    软件本身具有许多特点,比如:复杂性,一致性、不可见性和可变性,这些特性使得软件的编写、维护和运行等都比较困难。为了应对这些问题,产生了许多针对软件运维的基本原理和技术,这......
  • 软件工程
    对软件工程的理解软件工程的定义软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管......
  • C#教程 - 深入理解C#与.NET
    更新记录转载请注明出处:2022年9月25日发布。2022年9月10日从笔记迁移到博客。CILTypeDef类型定义TypeRef引用其他程序集的类型Assembly......
  • static静态变量的理解
    静态变量类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存......