[英]How to reuse a code which is slightly different
關於如何正確設計和實現兩種方法,我遇到了一些困難。
我有2種方法,A和B。方法A做2件事情,方法B只做1件事情。 方法A所做的事情之一與方法B所做的事情相同,因此從方法A內調用方法B是非常合理的。
現在的問題是,這兩種方法都需要向用戶發送一封電子郵件。 當我調用A時,我希望收到1封電子郵件,而當我調用B時,我也希望收到1封電子郵件。 這意味着,如果我在A內調用方法B,現在我將在執行1個操作(=調用A)的同時收到2封郵件。 為了使在B中簡單包含B更具誘人性,這兩種方法的設置過程實際上都是相同的,因此除了重做B中的設置之外,我還可以簡單地使用A中的這些設置數據來調用方法B。但是,當直接調用B時,我沒有提供設置數據,因此在這種情況下,我仍然需要進行設置。
解決此類問題的最佳方法是什么? 我是不是該:
PS。 我不確定stackoverflow是否真的適合這樣的問題,請讓我知道是否有更好的stackexchange平台。
謝謝你的任何想法
我也不知道這是否真的是話題。 那個...
在我看來,“發送電子郵件”是方法A需要完成的方法B工作中包含的內容之一。 因此,為什么不僅僅在方法B中實現它呢? 然后方法A在調用方法B時免費獲得它。
如果電子郵件的確切內容因是否調用方法A而有所不同,請確定…您可以向方法B添加參數以某種方式自定義電子郵件。
最后,您在細節上含糊不清。 通過從方法A調用方法B可以節省多少代碼還不太清楚。如果有意義,那么我強烈支持這樣的代碼共享。 但是,如果我們只說一條語句,那……似乎就不那么值得打擾了; 也許只是將相同的單個語句放入每個方法中會更好。
抱歉,答案含糊。 GIGO。 :)
您可以將方法的返回用於我們的電子郵件內容:
private String funcA() {
// foo
return "Mail from funcA";
}
private String funcB() {
funcA(); // ignoring the return value here, we later return our on
// foo
return "Mail from funcB"; // our own return
}
然后,您在以下功能之外發送電子郵件(僅示例代碼):
private void mainFunc() {
String mail = condition ? funcA() : funcB();
sendMail(mail);
}
我有兩個想法:
為了闡明第一個想法:
methodA() {
firstAction();
secondAction(Parameter parameterFromA);
}
methodB() {
secondAction(Parameter parameterFromB);
}
我建議您進一步分離功能。
當前,您可以使用兩種方法來描述:
void MethodA()
{
DoThing1();
DoThing2();
SendEmail();
}
void MethodB()
{
DoThing1();
SendEmail();
}
因此,一個相當簡單的答案是將兩種方法中的實際功能位提取為它們自己的方法,並留下類似於上述內容的外殼。 每個DoThingX
方法都可以返回構建電子郵件等所需的內容。
當然,如果DoThingX
方法真的很小(例如, DoThingX
兩行),那么以這種方式將它們分開可能沒有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.