Henrik Carlsson's Blog

All things me.

Ett svar till Emils svar till mitt svar

posted this on and tagged it with php Programming

Min ursprungliga post – En kommentar till ”Refactoring Loops and Conditionals”

Emil svarade genom ett par tweets, som jag här satt samman till ett sammanhängande citat för tydlighetens skull.

Jag tycker han gör det rätt fram tills han blandar in collection. Även om collection är helt guld så blir det i det där fallet inte lättare att förstå. Men bort med switchen och in med en array istället. Helt klart.

och tredjepartslibraries är ju väldigt vanligt sedan Composer slog igenom. Om man inte utnyttjar det är man korkad. :)

Jag håller med om att det i det här fallet inte är något fel att byta ut ett Switch-statement mot en Array, så jag tror att vi är mer eller mindre överens.

Sen kan jag absolut se värdet av tredjepartsramverk. Dock medför de en högre tröskel för förståelse för den som läser koden i efterhand eftersom den förutsätter en förtrogenhet med det aktuella ramverket. Och visst, idag använder ”alla” Laravel men om två år är det något annat som ”alla” använder. Huvudproblemet här skulle jag säga är att PHP har så dåliga interna typer att man som utvecklare så lätt frestas att förlita sig på en tredjepart för något så grundläggande som en ”Collection”-klass.

Replies and comments

En kommentar till ”Refactoring Loops and Conditionals”

posted this on and tagged it with php Programming

Min vän Emil twittrade nyss följande:

Dagens lunchfilm för dig som programmerar PHP.
https://vimeo.com/115719437
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.

(Also linked from Twitter.)


  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. 

Replies and comments

iTunes U-kurs i iOS utveckling med Swift

posted this on and tagged it with iOS iTunes U Programming

Stanford University har nu börjat publicera sin kurs Developing iOS 8 Apps with Swift i iTunes U.

I somras lärde jag mig Objective-C och iOS-utveckling genom att följa en äldre, liknande Stanford-kurs. Det var otroligt lärorikt och värdefullt så om du är intresserad av att lära dig att utveckla program för iOS-plattformen så ska du definitivt ta en titt på den här kursen.

Utan att själv ha provat Swift så skulle jag ändå rekommendera att du börjar med en äldre upplaga av kursen där Objective-C används. Detta eftersom det är ett mycket mera ”moget” programmeringsspråk. Konventionerna är mera etablerade och expertisen bättre.1

Observera också att det här inte är en nybörjarkurs i programmering. Har du aldrig programmerat förr så bör du börja med något annat.


  1. Paul Hegarty som höll de gamla Objective-C-kurserna verkar vara en gammal NeXT/Apple-programmerare som var med och tog fram Objective-C och Foundation/Cocoa, så han sitter på verklig experkunskap.