热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

做的比完美的要好吗?第1部分

资源在实现复杂的给定算法时,保持干净的代码和良好的体系结构的挑战背景在我学士学位的上学期中。在电气工程领域,我们被分配了实施WFQ-GPS路由算法的项目
资源

在实现复杂的给定算法时,保持干净的代码和良好的体系结构的挑战

背景

在我学士学位的上学期中。 在电气工程领域,我们被分配了实施WFQ-GPS路由算法的项目,作为计算机网络课程的一部分。 除了将其实现为在线调度方法(这会对输入数据包的处理产生影响)之外,我们没有任何其他限制。 效率是一个奖励。

我认为这个项目是一个很好的机会,可以提高我的软件工程技能,并以干净有效的方式编写此算法。 不幸的是,我的愿望没有实现,由于期限的限制,我和我的伴侣妥协了,最终交出了一个“完成”而不是一个完美的项目。

学期结束后,我决定实现自己的目标,并以正确的方式完成此项目。

决定

  • 我需要学习C ++。 最初的项目是用C编写的,但是我知道C ++包含更多有用的数据结构(例如STL库),并且在内存分配和实现设计模式方面更加灵活。
  • 我是C开发人员,我已经知道C ++的主要概念。 那么,成为C ++-er的最佳方法是什么? 有一些指南概述了这两种语言之间的区别。 但是,我发现最有用的是咨询我的一位资深C ++开发人员。 他为我提供了对该语言及其最佳实践的更广阔视野。 他还同意在整个项目中指导我,这是无价的。

入门

提高我的绘画技巧

我开始绘制代码的体系结构。 我从以前的几个项目中学到的最好的教训之一是,这一步骤至关重要且非常有帮助。 它有很多优点,值得重点介绍:

  • 它可以帮助您更好地理解您愿意实现的功能,因为设计首先应该服务于算法的正确性。
  • 它是代码的映射-您可以在其中决定对象,对象之间的关联,共享资源和数据结构。 写作 (不是在你的脑袋假想文件)了这一切提前,你想想上述所有的力量,实际写入之前。 我通常使用draw.io或简单的笔和纸(希望获得更多好的工具的建议)。
  • 当事情变得肮脏(并且当您开始编写和/或有到期日期时事情确实变得肮脏)或在调试过程中时,可以返回到此安全区域。 它确切地提醒您您打算做什么。 当然,它将在此过程中进行修改,但这就像您的代码指南针一样。
  • 这对于与同行的协作非常有价值。

测试。 一切。

根据我过去的经验,以及我对C ++的了解,我对整个过程进行了几乎所有的测试。 这是我第一次采用这种方式,并且证明了自己。

一个很好的例子是我学会了在函数内部创建对象时必须使用“ new” (这使它们分配在堆中,而不是在函数堆栈中),以防我希望在函数(以及函数外部)使用它们的情况。然后释放此内存)。 这是在我将对象的创建导出到与main不同的功能之后,即使它只是“取出”相同的行并从中创建功能-我进行了测试并找到了问题。 多亏了我的导师,我才得以学习这种练习。

(我将在下一篇文章中详细说明在此类项目中何时,如何以及以什么方式进行调试)

一步一步来

一旦有了对效率,体系结构和对C ++功能的充分使用方面满意的坚实的代码框架,我便从一个基本示例开始。 它类似于算法的工作方式。 然后,我进入了我的第一个“真实”输入。

基本示例在第一次尝试时几乎完美无缺。 我的想法是:

我做对了所有事情,我的代码很棒,现在一切都应该正常工作。

不。 我的意思是,这的确带给我一个很好的观点,但是最初的实际投入仅部分起作用。 我希望它表现不佳。 这几乎使我完全放弃了我所画的体系结构,并且对代码进行了微调试,以了解其故障,而没有任何有关新功能和特性的文档。 不好。

多亏了Git,我让我想起了这个项目的目标,不久之后,我又回到了我的体系结构,即“罗盘”,试图找出缺少的内容。

目前,在3个输入中有2个工作正常,这非常令人满意。 这些天来,我正在努力理解为什么第三个不是。

要回到我的图纸。 第二部分见。

顺便说一句,您可以在这里找到我的代码,请随时提出您的建议,并帮助我成为更好的软件工程师。

From: https://hackernoon.com/is-done-better-than-perfect-part-1-2500e616ce16



推荐阅读
author-avatar
苦咖啡青柠檬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有