gpt4 book ai didi

c - DRY 如何与 "Separation of concern"和 "One function, one task"组合?

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:45 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
How many lines of code should a function/procedure/method have?

Out 团队有一个结构不佳的 ansi-c 代码项目。我想使用一些 CC 技术来整理代码库。

至于 C 代码,我们有很多指针和很多 NULL 指针陷阱需要捕捉。因此有很多看起来很相似的片段。这就像

if (pointer == NULL)
{
function1();
function2();
}

无处不在。然后有大量的函数将以相同的方式相互调用,只是有一些变化,比如

function1();
function2a();
function3();

function1();
function2b();
function3();

无处不在。

我想将这些 block 提取为单个函数以减少 LOC 和复制粘贴。但这不仅会创建一个(有点)正交层,还会创建一些功能,除了一些细节外,它们或多或少地做着相同的事情。更糟糕的是,它会创建同时做很多事情的函数。

那么,什么是好的策略?更重要的是,高层精益代码、低层精益功能或精益架构?哪个原则胜过另一个?关注点分离还是 DRY?

我想重构那个野兽,但不知道从哪里开始。

展开下面的示例并放入相同的名称。假设我们有

morningBath();
drinkCoffee();
if (checkMail())
{
answerMail();
}

并将其放入 morningRoutine()。现在我们有

drinkTea();
morningBath();
if (checkMail())
{
answerMail();
}

并将其命名为 sundayMorningRoutine()。但是然后有重复的代码。或者将 morningRoutine(day) 扩展为

if (day == sunday){
drinkTea();
morningBath();
} else {
morningBath();
drinkCoffee();
}
if (checkMail())
{
answerMail();
}

或者也许

if (day == sunday){
drink(Tea);
morningBath();
} else {
morningBath();
drink(Coffee);
}
if (checkMail())
{
answerMail();
}

我想知道这是否是好的风格..也许..感谢您的提示!

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com