En kommentar till ”Refactoring Loops and Conditionals”

Min vän Emil twittrade nyss följande:

Dagens lunchfilm för dig som programmerar PHP.
http://ift.tt/1SP9P1Z
 Diskutera i grupp.
Emil Österlund, 2016–04–27

Jag fick en stor lust att, precis som Emil uppmanar till, diskutera det som visades i videon, och eftersom 140 tecken inte är en särskilt bra grogrund för nyanserad diskussion så tänkte jag blogga om det istället. (Just nu skriver jag på svenska för att i första hand diskutera med Emil. Eventuellt översätter jag det hela till engelska vid ett senare tillfälle om det visar sig vara intressant.)

Låt mig börja med att säga att jag är helt övertygad om att Adam Wathan som har gjort videon är en mycket mera kunnig PHP-utvecklare, och säkert programmerare i största allmänhet, än vad jag är. Jag är bara en glad amatör. Så jag vill inte påstå att han är okunnig, att hans lösning är idiotisk. Det är säkert jag som missförstått nåt men tills jag förstår mer så har jag några invändningar. Dessa kan sammanfattas under rubriken:

Varför?

Varför denna refaktorisering1? Vad vinner vi på den? Blir koden mycket snabbare att exekvera? Blir den lättare att uppdatera?

Jag skulle påstå att den definitivt blir svårare att förstå. Kanske inte för den som redan programmerar på avancerad nivå, och visst ”det är lätt om en kan”, men omstruktureringen fick koden att gå från något som var fullt läsbart för den som är en nybörjare inom programmering till totalt obegripligt för den inte redan invigde.

”Switch”-statements och loopar kanske inte är så snygga att titta på men det är glasklart vad de gör. Jag skulle kunna visa den ursprungliga koden för de 12-åringar som vi (Emil, jag och andra) på fritiden undervisar i grundläggande programmering och annat och barnen skulle ha förstått allt redan under första lektionen. De refaktoriserade resultatet skulle kräva många lektioner för att förstå, inklusive en lektion i ett tredjepartsramverk eftersom den vanliga array-datatypen i PHP inte anses vara bra nog.2

Vi har bytt bort lättförståelig kod, så vad fick vi istället?3 Adam Wathan påstår att han gör koden mera ”simple” och ”clean” men jag förstår inte på vilket sätt det är sant. Det blev mindre kod men är det verkligen samma sak som ”simple” och ”clean”. Det är säkert Objective C-programmeraren i mig som talar men jag är ett fan av kod som är tydlig och lättförståelig, även om det innebär att den är längre och mera mångordig än vad som vore nödvändigt för samma funktion.


  1. ”Internet” påstår att det här är rätt översättning.
  2. Jag kan i och för sig hålla med om att ”Array” inom PHP är ett stort jävla mörker, vilket jag insåg när jag började med Objective C och såg hur vackert NSArray och NSDictionary fungerade där. Men PHP-kverulansen sparar jag till en annan dag.
  3. Det är alltså en ärlig fråga, inte ett sarkastiskt uttalande. Jag vet inte vad vi vinner på den nya koden.

Originally posted on my blog at http://ift.tt/1SP9Nao
 April 27, 2016 at 01:44PM

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.