
დუბლირება არასწორ აბსტრაქციაზე იაფია — სანდი მეცის გაფრთხილება
2014 წლის RailsConf-ის მოხსენებაში და 2016 წლის ესეში სანდი მეცმა დაამტკიცა, რომ დუბლირება ბევრად იაფია, ვიდრე არასწორი აბსტრაქცია, აღწერა გზა, რომლითაც საერთო ფუნქცია პირობებით სავსე ხაფანგად იქცევა, და უკან დაბრუნების რეცეპტი შემოგვთავაზა.
დუბლირება ბევრად იაფია, ვიდრე არასწორი აბსტრაქცია
2014 წელს, RailsConf-ზე, სანდი მეცმა მოხსენების „All the Little Things“ მცირე ნაწილი მიუძღვნა თეზისს, რომელიც დღემდე ტრიალებს პროგრამისტულ გუნდებში: დუბლირება ბევრად იაფია, ვიდრე არასწორი აბსტრაქცია. მისი რჩევა პირდაპირი იყო — დუბლირებას ამჯობინეთ არასწორი აბსტრაქცია. რეაქცია იმდენად ძლიერი აღმოჩნდა, რომ მოგვიანებით მან ეს იდეა ესედ გააფართოვა: ტექსტი თავდაპირველად მისი Chainline-ის ბიულეტენისთვის დაიწერა და 2016 წლის იანვარში ბლოგზე ხელახლა გამოქვეყნდა. ზოგიერთმა დეველოპერმა უთხრა, რომ გონება დაკარგა; ბევრად მეტმა თქვა, რომ აღწერილი სქემა მათსავე კოდში ყველგან გვხვდება.
როგორ იქცევა კარგი აბსტრაქცია ხაფანგად
მეცი იმეორებად ისტორიას აღწერს. პროგრამისტი A ამჩნევს დუბლირებას, გამოაქვს ის ცალკე, არქმევს სახელს — მეთოდს, ზოგჯერ კლასს — და ყველა ასლს ახალი აბსტრაქციით ცვლის. კოდი იდეალურად გამოიყურება. დრო გადის. ჩნდება ახალი მოთხოვნა, რომელსაც აბსტრაქცია თითქმის ერგება, მაგრამ არა ზუსტად. პროგრამისტი B ვალდებულად თვლის მის შენარჩუნებას, ამატებს პარამეტრს და პირობით ლოგიკას. შემდეგი მოთხოვნა მოაქვს კიდევ ერთ პარამეტრს და კიდევ ერთ პირობას — ციკლი კი გრძელდება მანამ, სანამ კოდი გაუგებარი გახდება.
ხაფანგი ფსიქოლოგიურიცაა და ტექნიკურიც. არსებული კოდი თავისი არსებობით თითქოს ამტკიცებს, რომ სწორი და საჭიროა, და რომ ვიღაცის ძალისხმევას განასახიერებს — ამ ძალისხმევის დაცვის სურვილი კი ძლიერია. რაც უფრო რთული და გაუგებარია კოდი, მით უფრო დიდია მისი შენარჩუნების ზეწოლა — ესაა ჩაძირული ხარჯების ილუზია. სანამ შემდეგი დეველოპერი მოვა, საერთო დამხმარე ფუნქცია უკვე აღარ არის ერთი იდეა, არამედ პირობებით გაჯერებული პროცედურა, რომლის გაგება ძნელია და გატეხვა — ადვილი.
უკან დაბრუნების გზა: ჩასმა, გასუფთავება, ხელახლა გამოტანა
მისი რეცეპტი არაპირდაპირია: როცა აბსტრაქცია არასწორია, წინსვლის ყველაზე სწრაფი გზა უკან მიდის. ჩასვით აბსტრაჰირებული კოდი ყველა გამომძახებელში, თითოეულ მათგანში პარამეტრებით განსაზღვრეთ, რომელი ნაწილი სჭირდება რეალურად, დანარჩენი კი წაშალეთ. ასე ერთად ქრება აბსტრაქციაც და პირობითი ლოგიკაც, და თითოეულ გამომძახებელს მხოლოდ ის კოდი რჩება, რომელსაც იყენებს.
გუნდები, რომლებმაც ეს სცადეს, ხშირად აღმოაჩინეს, რომ გამომძახებლები სინამდვილეში ერთსა და იმავეს არ აკეთებდნენ. ძველი აბსტრაქციის გაქრობის შემდეგ შესაძლებელი გახდა დუბლირების ხელახლა გამოყოფა და გამოცდილებიდან ახალი აბსტრაქციების გამოტანა — ფუნქციონალის დამატება კი დაჩქარდა. მეცის პრაქტიკული წესი: თუ საერთო კოდში პარამეტრებს გადასცემთ და პირობით გზებს ამატებთ, აბსტრაქცია არასწორია. მისი მიტოვება ადრეულ ეტაპზე ნაკლებად მტკივნეულია, ვიდრე მისი დაცვა. „როცა აბსტრაქცია არასწორია, წინსვლის ყველაზე სწრაფი გზა უკან მიდის. ეს უკანდახევა არაა, ეს უკეთესი მიმართულებით წინსვლაა“, — წერს ის.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.