FAQ |
Kalender |
|
![]() |
#1 | ||
|
|||
Flitig postare
|
Citat:
Kompilatorn fångar, av egen erfarenhet, upp fel som nybörjare ofta begår; syntax fel. Erfarna utvecklare missar sällan semikolon eller har ett mellanslag på fel ställe. Vi gör istället logiska fel, fel som inte en kompilator kan hitta. |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Kompilatorn fångar upp just stavfel eftersom den upptäcker att du inte deklarerat den felstavade variabeln och du får ett felmeddelande som talar om exakt vilken variabel, konstant funktion, klass eller annan identifierare som du stavat fel på samt exakt vilken rad och kolumn där felet börjar. Kompilatorn hittar många enkla fel och underlättar programmerarens arbete enormt på den punkten. Några saker som kompilatorn gör enträget: - Kollar syntax - Kollar att alla variabler som används i programmet är deklarerade - Kollar att alla variabler som är deklarerade används, annars får man en varning - Kollar att alla uttryck som tilldelar en variabel har rätt datatyp (dvs den deklarerade datatypen) - Kollar att alla satser i programmet är avslutade - kollar att alla kodblock är definierade med start och slut - Kollar att identifierarnas scope stämmer . . . Kompilatorn är programmerarens bästa vän... Jag har mycket svårt att acceptera att det fortfarande finns programspråk som saknar kompilator.... De som ligger bakom php har tydligen fått en hel del önskemål från mer erfarna utvecklare om att tighta tillk språket så man får ett något bättre stöd för typning och deklarationer, men jag tycker de hittils gjort det lite till en halvmesyr. Mitt försök är till för att försöka lära mig om det finns möjligheer att strama till språket för att få bättre felhantering redan innan koden tas i produktion. Senast redigerad av Conny Westh den 2012-07-31 klockan 03:22 |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Administratör
|
Citat:
Att inte kunna identifiera oanvändna egenskaper eller metoder är en nackdel i språket. Det är såpass svårt just pga dess dynamiska natur. Enda sättet att komma runt detta är att göra alldeles för omfattande tester där du kan vara säker på 100% av använd kod exekveras (och det är knappats något som man brukar göra i några projekt även om vissa läroböcker säger det). Kollar att satser är avslutade gör du enkelt med en Linter redan medans du skriver. Du har även andra bra verktyg du kan använda i det stadiet för att kontrollera koding-standard, komplexitet osv (se t ex PHPCS, PHP MD). Notera att du även har en PHPCS feature där du kan fixa din kod (PHPCS fixer) så den inte behöver se ut som maskerad C#. För ditt exempel. Om du vill ha setters och getters för varje variabel som ska accessas utifrån är det bara att du i get/set kollar efter funktionsnamnet och anropar den om den finns. Desto snyggare än switch/if som väldigt lätt introducerar fel (speciellt en miss av en break; som du förmodligen inte upptäcker ens med din kompilator). Om du vill titta på vad ett språk du inte är van vid har för möjligheter att göra något du vill göra får du först titta på vad du vill göra och vilka effekter det ska ha. I nästa skede tittar du på hur du kan åstakomma det i valda språket. Att börja med hur du gör det i ett annat språk är fel väg att gå oavsett vilket språk du kommer till. Skriv i språket du använder, annars gör du bättre i att hålla dig till C#. Det som PHP Core har att ta ställning till är hur de ska behålla det de byggt. De har byggt ett språk utan stark kommersiell backning som nu används av hälften av de 40 största webbsajterna (motsvarande för .NET är runt 10%, och i stort sett uteslutande microsoft-sajter). Jag kan hålla med om att vissa saker har saknats för objektorienterad utveckling, men att det går fel väg framåt (försiktigt) eller att det är en halvmesyr håller jag inte med om. Att göra det till ett stelt kompilerat språk skulle vara ett bra sätt att döda språket på ett par år. Det skulle bli ett snabbare, stelare och bok-"korrekt" språk - som 75% av användarna övergav.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
Svara |
|
|