ให้ฉันนำหน้าสิ่งนี้โดยบอกว่านี่ไม่ใช่รหัสของฉันหรือรหัสเพื่อนร่วมงานของฉัน หลายปีที่ผ่านมาเมื่อ บริษัท ของเรามีขนาดเล็กลงเรามีโครงการบางอย่างที่เราต้องการทำโดยที่เราไม่มีกำลังการผลิต ตอนนี้ฉันไม่มีอะไรกับผู้รับเหมาช่วงหรือผู้รับเหมาทั่วไป แต่ codebase ที่พวกเขาผลิตนั้นเป็นจำนวนมากของ WTF ที่ถูกกล่าวว่ามันทำงาน (ส่วนใหญ่) ดังนั้นฉันคิดว่ามันอยู่ใน 10 อันดับแรกของโครงการเอาต์ซอร์ซที่ฉันเคยเห็น
ในขณะที่ บริษัท ของเราเติบโตขึ้นเราได้พยายามพัฒนาบ้านให้มากขึ้น โปรเจ็กต์นี้ลงบนตักของฉันดังนั้นฉันได้ไปทำความสะอาดเพิ่มการทดสอบ ฯลฯ ฯลฯ
มีรูปแบบเดียวที่ฉันเห็นซ้ำหลายครั้งและดูเหมือนว่าน่ากลัวอย่างมากที่ฉันสงสัยว่าอาจจะมีเหตุผลและฉันแค่ไม่เห็นมัน รูปแบบเป็นวัตถุที่ไม่มีวิธีการสาธารณะหรือสมาชิกเพียงแค่ตัวสร้างสาธารณะที่ทำงานของวัตถุทั้งหมด
ตัวอย่างเช่น (รหัสอยู่ใน Java หากมีความสำคัญ แต่ฉันหวังว่านี่จะเป็นคำถามทั่วไปมากขึ้น):
public class Foo {
private int bar;
private String baz;
public Foo(File f) {
execute(f);
}
private void execute(File f) {
// FTP the file to some hardcoded location,
// or parse the file and commit to the database, or whatever
}
}
หากคุณสงสัยรหัสประเภทนี้มักจะถูกเรียกในลักษณะดังต่อไปนี้:
for(File f : someListOfFiles) {
new Foo(f);
}
ตอนนี้ฉันได้รับการสอนมานานแล้วว่าวัตถุที่สร้างอินสแตนซ์ในลูปโดยทั่วไปเป็นความคิดที่ไม่ดี ดูรหัสนี้ดูเหมือนว่ามันจะดีกว่าที่จะวางคอนสตรัคและทำให้execute
วิธีการคงที่สาธารณะ
ฉันถามผู้รับเหมาว่าทำไมมันถึงทำแบบนี้และคำตอบที่ฉันได้รับคือ "เราสามารถเปลี่ยนได้ถ้าคุณต้องการ" ซึ่งไม่เป็นประโยชน์จริงๆ
อย่างไรก็ตามมีเหตุผลที่จะทำสิ่งนี้ในภาษาการเขียนโปรแกรมหรือไม่หรือเป็นเพียงการส่งให้ WTF รายวันอีกครั้งหรือไม่
public static void main(string[] args)
และผู้ที่เคยได้ยินของวัตถุแล้วพยายามที่จะบดเข้าด้วยกัน