सर्वजण SOLID तत्वांबद्दल बोलतात. तुमचे सिनियर डेव्हलपर कोड रिव्यूमध्ये त्यांचा उल्लेख करतात. तुमचे आर्किटेक्चर डॉक्युमेंटेशन त्यांचा संदर्भ देते. पण वास्तविक प्रकल्प SOLID समजून घेणार्या संघ असूनही का अव्यवस्थित बकवास बनतात? उत्तर: SOLID समजणे आणि त्याच्या साथ खरोखर बांधणे हे पूर्णपणे वेगळ्या गोष्टी आहेत [1].
बहुतेक विकासकर्ते SOLID लवकर शिकतात, डोके हलवतात, आणि नंतर ज्या क्षणी अंतिम मुदत येते तेव्हा या तत्वांचे उल्लंघन करतात. मला तुम्हाला दाखवू द्या जिथे रबर रस्त्यावर टेकला - आणि ते का कठीण असते.
OOP ला ५०+ वर्षे झाली आहेत. Classes, objects, inheritance — हे काम करते, सगळ्यांना माहीत आहे, जवळजवळ प्रत्येक लोकप्रिय भाषा याला support करते. मग लोक functional programming बद्दल अशा प्रकारे का बोलत आहेत जणू ते काही revelation आहे? कारण OOP गोष्टींचे modelling करण्यात उत्तम आहे. FP transformations चे modelling करण्यात उत्तम आहे. बहुतेक real software मध्ये दोन्ही आहेत, आणि दोन्ही एकत्र करण्याचा प्रयत्न करणे हेच confusion सुरू होण्याचे कारण आहे.
OOP ला पन्नास वर्षे झाली आहेत. Software क्षेत्रातील प्रत्येकाने यावर एक course केलेला आहे. बहुतेकांनी SOLID, inheritance, encapsulation, polymorphism याबद्दल वाचलेले आहे. तरीही — मला startup पासून enterprise projects पर्यंत, codebase नंतर codebase मध्ये त्याच design चुका दिसत राहतात.
सिद्धांत जाणणे म्हणजे चांगले OOP लिहिणे नव्हे. येथे ते खरोखर कुठे चुकते ते पाहूया.
The God Object एखादा project सुरू करा, एक UserService class तयार करा. कोणीतरी त्यात payment logic जोडते. मग notification handling. मग authentication checks. सहा महिन्यांनंतर: एक 2000-ओळींची फाईल जी सर्वकाही करते, सर्वांवर अवलंबून असते, आणि कोणी तिला स्पर्श केला की तुटते.