您是在寻求软件工程的圣杯,但还没有人对这个问题有“答案”。
重要的是,您要跟踪所犯错误的类型,然后对这些错误进行分析,以确定是否存在共同趋势。根本原因分析是这种自省的正式名称,网络上有很多与此有关的材料。
专业人士使用错误跟踪系统,以便他们(1)知道需要修复的内容,而且(2)事后分析必须修复的内容。您不需要那么正式-仅在笔记本中保存理货对您来说就可以了。
设计阶段缺陷
如果您发现大多数错误是由于对问题陈述的误解引起的,或者您一直发现自己选择了错误的算法或解决问题的路径,那么在设计阶段就会遇到问题。
您应该在项目开始时花更多的时间,并确切指出需要完成的工作以及应该如何执行。请仔细检查此工作,并重新研究原始问题,并确定您是否真的以正确的方式解决了该问题。在开始时多花一三个小时可以为您节省许多时间。
编码错误
如果您的设计是可靠的,但是您一直在与您使用的编码语言作斗争,请给自己一些工具,这些工具可以为您分析代码,并尽早警告您,并且常常会犯错误。
如果您使用C语言进行编程,请打开所有编译器警告,使用像一样的语义检查器lint
,并使用像valgrind
来捕获与动态内存相关的常见问题的工具。
如果你的Perl编程,打开strict
和warnings
并留意它说什么。
无论您使用哪种语言,都可能存在许多工具,可以在您进入调试阶段之前帮助您捕获常见错误。
整合阶段的缺陷
在遵循良好的模块化实践开发代码时,必须开始将单独的部分粘合在一起。例如,代码的不同部分可能与用户输入,数据库交互,数据显示,算法/逻辑有关,并且每一个都是相对独立地构建的(也就是说,您倾向于专注于手头的部分)而不用担心与其他所有东西的集成)。
在这里,测试驱动开发(TDD)非常方便。您的代码的每个模块都可以具有测试,以验证它们是否按照设计方式工作。这些测试应该首先编写,也可以在过程的早期编写,以便您可以使用一组“助手”来保持诚实。当您开始使所有东西协同工作,并且发现您必须更改实现方式或与另一个子系统的交互方式时,您可以依靠测试来确保所做的工作所有这些一起工作不会破坏代码的正确性。
等等...
挑选一些有关软件工程和实用编码技术的书,您将学到许多使开发减少混乱并提高可靠性的不同方法。您还会发现,仅凭简单的旧经历-从硬碰硬的学校获得学位-也会使您恢复身材。
几乎所有内容都归结为,在开发/发布过程的后期,一点点时间和前期工作就能获得丰厚的回报。
您在职业生涯的早期就已经注意到这些问题,这对您的未来来说是一个好消息,我祝您好运。