ตามคำตอบที่ยอมรับได้ใน " เหตุผลที่ต้องการตัวแปรท้องถิ่นมากกว่าตัวแปรอินสแตนซ์? " ตัวแปรควรอยู่ในขอบเขตที่เล็กที่สุดเท่าที่จะเป็นไปได้
ลดความซับซ้อนของปัญหาในการตีความของฉันซึ่งหมายความว่าเราควรปรับโครงสร้างโค้ดประเภทนี้อีกครั้ง:
public class Main {
private A a;
private B b;
public ABResult getResult() {
getA();
getB();
return ABFactory.mix(a, b);
}
private getA() {
a = SomeFactory.getA();
}
private getB() {
b = SomeFactory.getB();
}
}
เป็นอะไรเช่นนี้:
public class Main {
public ABResult getResult() {
A a = getA();
B b = getB();
return ABFactory.mix(a, b);
}
private getA() {
return SomeFactory.getA();
}
private getB() {
return SomeFactory.getB();
}
}
แต่ตามตัวแปร "จิตวิญญาณ" ของ "ควรอยู่ในขอบเขตที่เล็กที่สุดเท่าที่จะทำได้" ไม่ใช่ "ไม่เคยมีตัวแปร" มีขอบเขตที่เล็กกว่า "มีตัวแปร" ดังนั้นฉันคิดว่าเวอร์ชันด้านบนควรได้รับการปรับโครงสร้างใหม่:
public class Main {
public ABResult getResult() {
return ABFactory.mix(getA(), getB());
}
private getA() {
return SomeFactory.getA();
}
private getB() {
return SomeFactory.getB();
}
}
ดังนั้นมันจึงgetResult()
ไม่มีตัวแปรในตัวเลย มันเป็นเรื่องจริงเหรอ?
final
คำหลักจริงหรือไม่