हार्ड-अर्निंग Android प्रोग्रामिंग अनुभव

केंट बेक यांनी आपल्या कार्यान्वयन पॅटर्न्स पुस्तकात म्हटल्याप्रमाणे हे पोस्ट, “… चांगल्या कोडची महत्त्वाची बाब म्हणजे एका नाजूक आधारावर आधारित आहे…”. परंतु आपल्या सर्वांना हे माहित आहे की क्लीन कोडची कमतरता असल्यामुळे आम्हाला इतके दिवस सामना करावा लागला. आणि म्हणून केंट देखील करते.

केंट बेक

मेसच्या मालकीची एकूण किंमत

काही वर्षांपूर्वी, भारतातील सुरुवातीच्या टप्प्यातील स्टार्टअपमध्ये काम करणा na्या प्रत्येक भोळे अँड्रॉइड विकसकाप्रमाणे, मी वास्तविक जगाच्या समस्या “खाच” करण्याचा प्रयत्न केला, “उद्योगात व्यत्यय आणण्यासाठी” आणि “विश्वात खळखळ” करण्याचा प्रयत्न केला. चांगल्या सॉफ्टवेअर डिझाइन किंवा आर्किटेक्चरबद्दल जगात कोणतीही काळजी न घेता, मी एक अँड्रॉइड अॅप तयार करण्यासाठी कोड लिहायला सुरुवात केली जी एक दिवस भारतातील सर्वात मोठी ग्राहक-आरोग्य अॅप बनू शकेल.

स्प्रिंट नंतर स्प्रिंट, खाच नंतर खाच, वैशिष्ट्ये वेड्या गर्दीत तयार केली गेली. बांधा. मोजा. जाणून घ्या. वेळ-ते-बाजार महत्वाचे होते आणि प्रत्येक दिवस महत्त्वाचा होता. वेळ वाढत गेला, आम्ही दर 6 महिन्यांनी 1 टीम सदस्याच्या दराने वाढत आहोत आणि अॅपने दहा लाख डाऊनलोडचा आकडा गाठला आहे.

आमच्या अ‍ॅपचे Google Play स्टोअर डाउनलोड आणि रेटिंग.

यावेळेस अॅप क्षुल्लक असणे थांबले होते आणि ते अगदी एक गोष्ट असल्यास ते बहु-भाडेकरू क्लायंट बनले होते. आम्ही आता प्रारंभ केल्यावर तास लागू शकतील अशा वैशिष्ट्यांमध्ये काही दिवस, काहीवेळा आठवड्यांचा कालावधी लागला. प्रत्येक क्रियाकलाप स्पेगेटी कोडच्या 1000+ ओळी होते कारण Android अंतर्निहितपणे चिंतांच्या विभाजनाबद्दल फारशी चिंता करत नाही. गोंधळ होण्याच्या एकूण खर्चाने आम्हाला कमी प्रमाणात कमी केले.

Android कॉनड्रम

कोड कुरूप दिसत होता, क्रियाकलाप सर्वकाही व्यवस्थापित करतात:

  • थ्रेडिंग
  • आय / ओ
  • गणन
  • लेआउट
  • कॉन्फिगरेशन बदल
  • काय नाही

तरीही, क्रियाकलाप नियंत्रक आहेत, बरोबर? की ते दृश्ये आहेत? मला आता माहित नव्हते.

एमव्हीसी

स्काय इन ग्रँड रीडिझाईन

आम्हाला कुठेतरी कोडची लाइन बदलल्याने दुसरे कोठेही तुटू नये अशा मार्गाने अॅपची रचना करणे आवश्यक आहे. काका बॉब म्हणतो त्याप्रमाणे अ‍ॅप असायला हवा होता, “कठोर पण कठोर नाही, लवचिक पण नाजूक नाही”.

रॉबर्ट “काका बॉब” मार्टिन

असे घडले जेव्हा माझे गुरू आणि मित्र काशिफ रज्जाकी या गोंधळास दूर करण्यास मदत करण्यासाठी संघात सामील झाले. ग्रँड रीडिझाईन कधीच झाले नाही, परंतु आम्ही आमच्या कोडच्या बाहेर नरक परत आणले:

  • आम्ही “सेवा” स्तर जोडला आणि सर्व नॉन-यूआय कोड त्यांच्यामध्ये हलविला, एका वेळी एक सेवा.
  • आम्ही अमरुद चा वापर करून एसिन्टकॅस निवडले आणि ऐकण्यायोग्य फ्यूचर्समध्ये हलविले.
  • आम्ही OkHttp साठी AsyncHttpClient टाकले.
  • पण महत्त्वाचे म्हणजे आम्ही बरेच वाचन करण्यास सुरवात केली: क्लीन कोड, क्लीन आर्किटेक्चर, सॉलिड, डीआरवाय, द प्रॅगॅमेटीक प्रोग्रामर, जावा कॉन्क्रन्सी इन प्रॅक्टिस, डोमेन ड्राईव्हन डिझाइन इ.

लवकरच आम्ही आमच्या प्रयत्नांचे फायदे पाहू लागलो. उत्पादकता वाढली, आम्ही वेगवान गोष्टी लिहित होतो, प्रत्येकजण आनंदी होता.

आम्ही आमच्या अ‍ॅप्सना एकत्रित करेपर्यंत आणि सर्व नरक गमावले. फक्त अतिरिक्त सेवा स्तर असल्याने तो कापला नाही.

आर्ट ऑफ क्लीन कोड

क्लीन आर्किटेक्चरवर अंकल बॉबचे व्हिडिओ बर्‍याच वेळा पाहिल्यानंतर आणि अँड्रॉइड architectप आर्किटेक्चरवर बरेच वाचल्यानंतर, मी एमव्हीपी डिझाइन पॅटर्न आणि आरएक्सजावा प्रयोग करण्याचा निर्णय घेतला.

प्रयोगाच्या काही दिवसानंतर, आम्ही आरएक्सजावा वर स्विच करण्याचा आणि क्लीन आर्किटेक्चरचा वापर करून एमव्हीपी कार्यान्वित करण्याचे ठरविले. आम्ही सुनिश्चित केले आहे की आम्ही इंटरफेसच्या मागे सर्व थर अंतर्भूत केले आहेत आणि चिंता चांगल्या प्रकारे विभक्त केल्या आहेत.

  • व्ह्यू, सहसा एका फ्रॅगमेंटद्वारे अंमलात आणल्या गेलेल्यामध्ये प्रस्तुतकर्त्याचा संदर्भ असतो. प्रत्येक वेळी इंटरफेस क्रियेच्या वेळी प्रेझेंटरकडून मेथड कॉल करणे हे केवळ व्ह्यूज करेल.
  • व्ह्यू आणि मॉडेलमधील मध्यम व्यक्ती म्हणून काम करण्यासाठी प्रस्तुतकर्ता जबाबदार आहे. हे मॉडेलमधील डेटा पुनर्प्राप्त करते आणि त्या दृश्यावर हे स्वरूपित करते. परंतु टिपिकल एमव्हीसीच्या विपरीत, आपण दृश्यासह संवाद साधता तेव्हा काय होते हे देखील ते ठरवते.
  • मॉडेल केवळ डोमेन लेयर किंवा व्यवसायाच्या लॉजिकचा प्रवेशद्वार आहे.
  • इंटरएक्टर आय / ओ बरोबर व्यवहार करतो आणि त्या दृश्यात प्रदर्शित करण्यासाठी डेटा प्रदाता आहे.

आता पूर्णपणे नवीन अंमलबजावणीसह एक स्तर बदलणे खूप सोपे आहे. अँड्रॉइड अ‍ॅप विकासाचा भाग आणि पार्सल यूआयचे पुन्हा डिझाइन करणे बरेच सोपे झाले आहे. अखेर गोष्टी खंडित न होता वेगवान होऊ शकतात.

बॉय स्काऊट नियम

कोड लिहिणे पुरेसे नाही, वेळोवेळी कोड स्वच्छ ठेवावा लागेल. जीवनाची वस्तुस्थिती अशी आहे की सॉफ्टवेअरमध्ये एन्ट्रॉपीची प्रवृत्ती आहे. आम्ही सर्वांनी कोड रॉट आणि कालांतराने अधोगती पाहिली आहे म्हणून आम्ही एक साधा मुलगा स्काउट्स नियम घेतला: “कॅम्पग्राउंड क्लिनर तुम्हाला सापडला त्यापेक्षा स्वच्छ ठेवा.”

आम्ही तपासून पाहण्यापेक्षा जर आम्ही सर्व आपला कोड थोडा क्लिनर चेक इन केला तर कोड सहजपणे सडू शकला नाही. क्लिनअप काहीतरी मोठे असू शकत नाही. चांगल्यासाठी एक व्हेरिएबल नाव बदला, थोडे मोठे असलेले एक फंक्शन ब्रेक करा, एक लहान डुप्लिकेशन काढून टाका, स्टेटमेंट असल्यास एक कंपोझिट साफ करा.

निष्कर्ष

स्केलेबल अ‍ॅप तयार करण्याचा आमचा मार्ग कदाचित "योग्य" नसेल आणि कदाचित आपण या पोस्टशी सहमत नाही. तथापि, सर्व मार्शल आर्टिस्ट सर्वोत्कृष्ट मार्शल आर्टबद्दल किंवा एकातल्या सर्वोत्तम तंत्राबद्दल सहमत नसतात;)

एमव्हीपीकडे बरेच भिन्न दृष्टिकोन आहेत आणि अँड्रॉइडमध्ये ते अनुकूल करण्यासाठी बरेच मनोरंजक उपाय आहेत. एक सत्य म्हणजे आम्ही नाकारू शकत नाही ते म्हणजे क्लीन कोड महत्त्वाचे आहे आणि आपण ते केवळ गोंधळात टाकू शकत नाही.

हे पोस्ट अंकल बॉबच्या क्लीन कोडकडून बरेच कर्ज घेते आणि २०११ पासून काशिफच्या ड्रॉइडकॉन चर्चेतून हे शीर्षक चोरले.

क्लीन कोड आपल्यासाठी महत्त्वाचे असल्यास, आपण गप्पा मारू :) ट्विटर: @_arunsasi लिंक्डइनः https://www.linkedin.com/in/arunsasidharan

आपणास हे पोस्ट आवडले असल्यास, कृपया थोडेसे हृदय दाबा! ❤