მყარი მიღებული Android პროგრამირების გამოცდილება

ეს პოსტი, როგორც კენტ ბეკი ამბობს თავის წიგნში განხორციელების ნიმუშების შესახებ, ”… დაფუძნებულია საკმაოდ მყიფე წინადადებაზე, რომ კარგ კოდს აქვს მნიშვნელობა…”. მაგრამ ყველამ ვიცით, რომ სუფთა კოდი მნიშვნელოვანია, რადგან ამ ნაკლებობის გამო დიდხანს გვქონდა საქმე. კენტაც ასეა.

კენტ ბეკი

არეულობის ფლობის მთლიანი ღირებულება

რამდენიმე წლის წინ, ისევე როგორც ყველა გულუბრყვილო Android- ის დეველოპერმა, რომელიც ინდოეთში ადრეული ეტაპის დასაწყისში მუშაობს, ვცდილობდი „დამეკავებინა“ რეალურ სამყაროში არსებული პრობლემები, „გამეჩერებინა ინდუსტრია“ და „სამყარო გამეჩინა“. მსოფლიოში ზრუნვის გარეშე პროგრამული უზრუნველყოფის კარგი დიზაინის ან არქიტექტურის შესახებ, დავიწყე კოდების დაწერა Android პროგრამის შექმნისთვის, რომელიც ერთ დღეს გახდებოდა ინდოეთის ერთ-ერთი ყველაზე დიდი სამომხმარებლო თერაპიის პროგრამა.

Sprint შემდეგ sprint, hack შემდეგ hack, მახასიათებლები აშენდა შეშუპებული. აშენება. გაზომეთ. Ვისწავლოთ. დრო იყო ბაზარი მნიშვნელოვანი და ყოველდღე მნიშვნელოვანი. დრო გაფრინდა, ჩვენ ვიზრდებოდით გუნდის 1 წევრის განაკვეთს ყოველ 6 თვეში და აპლიკაციამ მოიტანა მილიონი გადმოტვირთვის ნიშანი.

ჩვენი აპლიკაციის Google Play მაღაზიის ჩამოტვირთვა და შეფასება.

ამ დროისთვის, აპლიკაცია შეჩერებული იყო ტრივიალური და ის გახდა მრავალ მობინადრე კლიენტი, თუნდაც ეს რამე იყოს. თვისებები, რომლებიც უნდა დავიწყოთ საათის განმავლობაში, როდესაც ახლა დავიწყებდით, დღეებში, ზოგჯერ კვირაში. ყველა აქტივობა იყო სპაგეტის კოდის 1000+ ხაზი, რადგან Android თანდაყოლილი არ აღელვებს შეშფოთების გამიჯვნას. არეულობის ფლობის მთლიანი ღირებულება მნიშვნელოვნად შეამცირა.

Android Conundrum

კოდი ჩანდა მახინჯი, საქმიანობამ მოახერხა ყველაფერი:

  • ძაფი
  • მე / ო
  • გამოთვლა
  • განლაგება
  • კონფიგურაციის ცვლილებები
  • რა არა

ბოლოს და ბოლოს, აქტივობები კონტროლერებია, არა? ან არიან ხედვები? აღარ ვიცოდი.

MVC

Grand Redesign In The Sky

ჩვენ უნდა შევადგინოთ აპლიკაცია ისე, რომ სადმე კოდი ხაზის შეცვლამ სხვა რამეზე არ დაგვღალა. აპლიკაცია უნდა ყოფილიყო, როგორც ბიძა ბობი ამბობს, ”ძლიერი, მაგრამ არა ხისტი, მოქნილი, მაგრამ არა მყიფე”.

რობერტ ”ბიძია ბობი” მარტინი

ეს იყო მაშინ, როდესაც ჩემი მწვრთნელი და მეგობარი კაშიფ რაზაყუკი შემოგვიერთდნენ გუნდს, რათა დაგვეხმაროთ არეულობის შემსუბუქებაში. გრანდიოზული რედიზაინი არასოდეს მომხდარა, მაგრამ ჩვენ ჯოჯოხეთი გადავიკეთეთ ჩვენი კოდიდან:

  • ჩვენ დავამატეთ "სერვისის" ფენა და გადავიტანეთ ყველა არა-UI კოდი მათში, ერთ სერვისში ერთდროულად.
  • ჩვენ გამოვცვალეთ AsyncTasks და Guava– ს მოსასმენად მოთავსებული მოსასმენად გადავიტანეთ
  • ჩვენ გადავუსვით AsyncHttpClient OkHttp– ს.
  • მაგრამ რაც მთავარია, ჩვენ დავიწყეთ ბევრი რამის კითხვა: სუფთა კოდექსი, სუფთა არქიტექტურა, SOLID, DRY, Pragmatic Programmer, Java Concurrency In Practice, Domain Driven Design და ა.შ.

მალევე დავიწყეთ ჩვენი ძალისხმევის დადებითი შედეგების დანახვა. პროდუქტიულობა გაიზარდა, ჩვენ უფრო სწრაფად ვწერდით ნივთებს, ყველას გვიხარია.

ეს იყო სანამ ჩვენ არ გავაერთიანებთ ჩვენს აპებს და ყველა ჯოჯოხეთი დამარცხდა. უბრალოდ დამატებითი სერვისის ფენის არსებობა არ გაჭრა.

სუფთა კოდექსის ხელოვნება

ბიძა ბობის ვიდეოს სუფთა არქიტექტურაზე რამდენჯერმე ნახვის შემდეგ და Android- ის აპლიკაციების არქიტექტურაზე ბევრი წაკითხვის შემდეგ, გადავწყვიტე ექსპერიმენტი მოეხდინა MVP დიზაინის ნიმუშზე და RxJava- ს.

ექსპერიმენტში რამდენიმე დღის განმავლობაში, ჩვენ გადავწყვიტეთ გადასვლა RxJava- ს და განვახორციელეთ MVP სუფთა არქიტექტურის გამოყენებით. ჩვენ დავრწმუნდით, რომ ყველა ფენა დავაფიქსირეთ ინტერფეისების უკან და კარგად გამოვყავით შეშფოთება.

  • ხედი, რომელიც ჩვეულებრივ ხორციელდება ფრაგმენტის მიერ, შეიცავს მითითებას წამყვანს. ერთადერთი, რასაც ხედი გააკეთებს, არის წამყვანისგან მეთოდის გამოძახება ყოველ ჯერზე, ინტერფეისის მოქმედების განხორციელებისას.
  • პრეზენტა პასუხისმგებელია იმოქმედოს როგორც საშუალო ადამიანი View და Model შორის. იგი იბრუნებს მონაცემებს მოდელისგან და ანაბეჭდება მასში ფორმატიზებულ ხედზე. მაგრამ ტიპიური MVC- სგან განსხვავებით, ის ასევე წყვეტს რა ხდება ხედთან ურთიერთობისას.
  • მოდელი მხოლოდ დომენის ფენის ან ბიზნესის ლოგიკის კარიბჭეა.
  • ინტერაქტორი ეხება I / O და არის იმ პროვაიდერის მონაცემები, რომლებიც ნაჩვენებია View- ში.

ახლა ბევრად უფრო ადვილია ერთი ფენის გადართვა სრულიად ახალი განხორციელებით. UI- ს, Android აპლიკაციების შემუშავების ნაწილი და ამანათის დიზაინი, გაცილებით ადვილი გახდა. საბოლოოდ რამ შეიძლება სწრაფად იმოქმედოს შესვენების გარეშე.

ბიჭების სკაუტის წესი

საკმარისი არ არის კოდის დაწერა საკმარისია, კოდი დროთა განმავლობაში უნდა იყოს დაცული. ცხოვრების ფაქტია, რომ პროგრამული უზრუნველყოფა აქვს ენტროპიის ტენდენციას. ჩვენ ყველამ ვნახეთ, რომ კოდის გაფუჭება და დეგრადაცია დროთა განმავლობაში მოხდა, ამიტომ სესხი გადავიღალეთ მარტივი ბიჭის სკაუტების წესით: ”დატოვე ბანაკი უფრო სუფთა, ვიდრე იპოვნე”.

თუ ჩვენ ყველამ შეამოწმეთ ჩვენი კოდი ცოტა უფრო სუფთა ვიდრე ეს, როდესაც გადავამოწმეთ იგი, კოდი უბრალოდ ვერ იწურებოდა. დასუფთავება არ უნდა იყოს რაიმე დიდი. შეცვალეთ ერთი ცვლადი სახელი უკეთესობისკენ, დაარღვიე ერთი ფუნქცია, რომელიც ოდნავ ძალიან დიდია, აღმოფხვრას ერთი მცირე დუბლირება, გაასუფთავე ერთი კომპოზიტი, თუ განცხადება.

დასკვნა

მასშტაბური აპის შექმნის ჩვენი გზა შეიძლება არ იყოს ”სწორი” და თქვენ შეიძლება არ დაეთანხმოთ ამ პოსტს. ყოველივე ამის შემდეგ, ყველა საბრძოლო მხატვარი არ არის შეთანხმებული საუკეთესო საბრძოლო ხელოვნებაზე, ან საუკეთესო ტექნიკაზე ერთში;)

არსებობს მრავალი განსხვავებული მიდგომა MVP- ს მიმართ და უამრავი საინტერესო გამოსავალია Android- ისთვის ადაპტირებისთვის. ერთი ფაქტი, რომლის უარყოფაც არ შეგვიძლია არის ის არის, რომ სუფთა კოდექსი მნიშვნელოვანია და თქვენ უბრალოდ ვერ შეძლებთ მის გაწმენდას.

ეს პოსტი სერიოზულად სესხება ბიძა ბობის სუფთა კოდექსიდან და 2011 წლამდე იძენს ტიპს კაშიფის დოდრაკონის საუბრიდან.

თუ სუფთა კოდექსი თქვენთვის მნიშვნელოვანია, მოდით ესაუბროთ :) Twitter: @_arunsasi LinkedIn: https://www.linkedin.com/in/arunsasidharan

თუ მოგეწონათ ეს ჩანაწერი, გთხოვთ, მცირე გულს მიხურეთ! ❤