- 给你entitiess有意义的名称
- 给你entitiess有意义的名称
- 给你entitiess有意义的名称
- 给你entitiess有意义的名称
- 的通用代码
- 可能信号/解压缩功能插槽/侦听器/观察者的概念适合你。
编辑:重构例子:
假设你的代码是:
void Button1_Click() {
function1();
function2();
function3();
function4();
function5();
}
void Button2_Checked(int variable0) {
if (variable0) {
function1();
function2();
} else {
function1();
function2();
function3();
function4();
function5();
}
}
步骤0-10是找到所有有意义的名称,按钮,功能, 变量中,参数(一次只重命名一个实体;为避免发帖,我跳过了这个):
void orderPizzaButton_Click() {
requestSalamis();
requestAnchovis();
requestShitake();
requestCheese();
requestGroundMeat();
}
void lasagnePervesityLevel_Changed(int newValue) {
if (newValue <= 0) {
requestCheese();
requestGroundMeat();
} else {
requestSalamis();
requestAnchovis();
requestShitake();
requestCheese();
requestGroundMeat();
}
}
第11步是找到commons在这些功能,并从中提取新的,可重复使用的功能 :
void orderPizzaButton_Click() {
requestStrangeIngredientCombination();
}
void lasagnePervesityLevel_Changed(int newValue) {
if (newValue <= 0) {
requestCheese();
requestGroundMeat();
} else {
requestStrangeIngredientCombination();
}
}
void requestStrangeIngredientCombination() {
requestSalamis();
requestAnchovis();
requestShitake();
requestCheese();
requestGroundMeat();
}
第12步是优化您的常用代码搜索(认为它作为一种标准化的):
void orderPizzaButton_Click() {
requestStrangeIngredientCombination();
}
void lasagnePervesityLevel_Changed(int newValue) {
if (newValue <= 0) {
requestStandardComponents();
} else {
requestStrangeIngredientCombination();
}
}
void requestStandardComponents() {
requestCheese();
requestGroundMeat();
}
void requestStrangeIngredientCombination() {
requestSalamis();
requestAnchovis();
requestShitake();
requestStandardComponents();
}
虽然在这个例子中似乎没有保存代码,但实际上它往往是将。此外,保存代码行并不重要,关键在于减少冗余,因为一旦你决定你的异端烤宽面条和奇怪的披萨也应该保留chilis和Sylvester Stallone的图像,你不仅会有代码复制,但是工作重复;最重要的是,有可能忘记代码中某些地方的新功能。当然,这非常糟糕,甚至是关键业务。假设你的客户希望他们的烤宽面条上有一个西尔维斯特·史泰龙的形象,就像你的营销活动承诺的一样,然后没有谁订购比萨饼就得到了这个形象,而只有那些订购了千层面的人。
还有更多的重构和设计,取决于实际的代码。我真的推荐 以获得以下书籍。另外,最重要的经验法则是:一次一步。做一个小的重构,编译,测试。
- 重构 - 改善既有代码的由Martin Fowler Addison-Wesley出版社
- C中的设计++编码标准:101分的规则,准则和最佳做法C++由Herb萨特,安德烈Alexandrescu的(C++在 - 深度系列)Addison-Wesley出版社
- 设计模式:通过伽马,头盔,约翰逊,Vlissides(俗称四人帮,为四人帮)可复用面向对象软件的元素,再次Addison-Wesley出版社
你的代码是好的,但我无法理解我如何在我的场景中使用它。基本上我不是很先进的用户。这将是更好的,如果你请给我充分的代码,所有我的function1(),function2()等等将被称为一个接一个与你的上述代码。谢谢。我只需要看看我的函数如何在你的实现中被调用。 plzz帮助我。谢谢 – Mou 2011-06-15 08:33:14