मैंने वास्तव में Jeff's postSpartan Programming पर आनंद लिया। मैं मानता हूं कि इस तरह का कोड पढ़ने के लिए एक खुशी है। दुर्भाग्यवश, मुझे यकीन नहीं है कि यह काम करने के लिए एक खुशी होगी।स्पार्टन प्रोग्रामिंग
सालों से मैंने "एक-अभिव्यक्ति-प्रति-पंक्ति" अभ्यास के बारे में पढ़ा है और उसका पालन किया है। मैं अच्छी लड़ाई लड़ी और मेरी जमीन आयोजित जब कई प्रोग्रामिंग पुस्तकों की तरह उदाहरण कोड के साथ इस सलाह मुकाबला किया है: हाल ही में
while (bytes = read(...))
{
...
}
while (GetMessage(...))
{
...
}
, मैं और अधिक व्यावहारिक कारणों के लिए प्रत्येक पंक्ति में एक अभिव्यक्ति की वकालत की है - डिबगिंग और उत्पादन समर्थन करते हैं।
ObjectA a = getTheUser(session.getState().getAccount().getAccountNumber());
निराशा होती है और पूरी तरह परिहार्य है: कि "रेखा 65" जो पढ़ता है पर एक NullPointer अपवाद का दावा उत्पादन से एक लॉग फ़ाइल हो रही है। उस कोड के साथ एक विशेषज्ञ को पकड़ने का छोटा जो "सबसे अधिक संभावना" ऑब्जेक्ट चुन सकता है जो शून्य था ... यह एक वास्तविक व्यावहारिक दर्द है।
प्रति पंक्ति एक अभिव्यक्ति कोड के माध्यम से कदम उठाने में काफी मदद करता है। मैं इस धारणा के साथ अभ्यास करता हूं कि अधिकांश आधुनिक कंपाइलर्स मैंने अभी तक बनाए गए सभी आवश्यक अस्थायी अस्थायी वस्तुओं को अनुकूलित कर सकते हैं ...
मैं साफ होने की कोशिश करता हूं - लेकिन स्पष्ट रूप से मेरे कोड को छेड़छाड़ करने से निश्चित रूप से श्रमिक लगता है। यह आम तौर पर कोड को ब्राउज़ करने में आसान नहीं बनाता है - लेकिन यह वास्तव में काम में आ रहा है या मेरे या किसी और के कोड के माध्यम से कदम उठाने पर काम में आ गया है।
क्या शैली वकील है और क्या आप इसे व्यावहारिक अर्थ में तर्कसंगत बना सकते हैं?
आप जिन धाराप्रवाह एपीआई के बारे में बात कर रहे हैं वे सामान्य रूप से राज्य के वस्तुओं के पेड़ (जैसे आपका पहला उदाहरण करता है) नहीं चलते हैं, बल्कि वे उसी ऑब्जेक्ट या नई आंतरिक वस्तुओं को राज्य को समाहित करते हैं। इसलिए जब वे एलओडी के पत्र का उल्लंघन करते हैं, तो वे अपनी भावना का उल्लंघन नहीं करते हैं। – kyoryu
@Kyoryu, मैं आपके बयान से सहमत हूं, लेकिन सवाल प्रति पंक्ति 1 कथन पर केंद्रित था। धाराप्रवाह एपीआई अभी भी डीबग करने के लिए थोड़ा कठिन बना देता है क्योंकि आप एक ही लाइन पर कई संचालन निष्पादित कर रहे हैं। –
मुझे आपकी बात पूरी तरह से मिलती है। अच्छे धाराप्रवाह इंटरफ़ेस वास्तव में एकाधिक, परमाणु कॉल होने की बजाय, एकल तार्किक कथन प्राप्त करने के लिए एक बेहतर तरीका के रूप में 'एकाधिक कथन' का उपयोग करते हैं। आपके उदाहरण के लिए, मैं यह भी तर्क दूंगा कि Account.GetUser() एक विशेष रूप से अच्छा उदाहरण नहीं है, क्योंकि आमतौर पर उपयोगकर्ता पर कार्य करेगा। मैं खाता देख सकता हूं। एक्टुअलऑपरेशन()।(अभी भी मुझे लगता है कि हम सामान्य रूप से सहमत हैं, हम 2% पर quibbling कर रहे हैं) – kyoryu