我有一个外科医生班,在不断地变化。
class Surgeon
{
string name, discipline;
public:
Surgeon(string _name, string _discp) : name{_name}, discipline{_discp}{}
void writeDir(string _dir);
void readDir(string _dir);
}现在我需要为外科医生添加录音设置。记住坚实的原则,这迫使我回到外科医生班,添加一个录音设置,并修改外科医生课程中的所有内容。现在,我也意识到,目前软件的实现已经增加了公司的价值。重构是不必要的,但是为了正确地完成这个任务,我需要重构整个类。如果我只是添加了与当前设计一起工作的特性,那么我只是在延续糟糕的设计。
软件工程师在哪里提供的价值最大?我应该生成快速显示结果但将来容易出错的代码吗?还是应该延迟快速结果以生成更健壮的好代码?如果有的话,幸福的媒介是什么呢?
发布于 2018-01-03 21:35:19
重构是不必要的,但是为了正确地完成这个任务,我需要重构整个类。
这是矛盾的。您不能在指定类应该重构的同时声称重构是不必要的。在这种情况下,为了遵循可靠的原则,需要重构现有的代码。“软件的当前实现已经为公司增加了价值”这一事实是无关紧要的:您不重构现有代码,因为它没有价值;您重构它是因为它与新设计不匹配。
我应该生成快速显示结果但将来容易出错的代码吗?还是应该延迟快速结果以生成更健壮的好代码?
对此,没有一般的答案。
如果必须快速获得可见的结果,以便将其显示给业务分析师并根据他的反馈快速迭代,那么您可以这样做。如果您这样做,请确保业务分析师(可能还有项目经理)理解其含义,即您正在做一个原型,即为了编写生产代码而丢弃的代码。
如果没有必要快速获得可见的结果,或者您知道与您一起工作的人不了解原型的含义,并且一旦看到任何结果,他们就会认为您的工作已经完成,根据从一开始就编写生产代码所需的时间给出一个估计。编写生产代码包括重构和测试:您的报酬不是用于类型代码,而是用于设计工作可靠的软件。
https://softwareengineering.stackexchange.com/questions/363381
复制相似问题