Kom ihåg mig?
Home Menu

Menu


PHP getters i klasser, funkar det?

 
Ämnesverktyg Visningsalternativ
Oläst 2012-07-30, 01:59 #1
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Citat:
Ursprungligen postat av goose Visa inlägg
Jobbigt att skriva enhetstester för att täcka upp enkla slarvfel som kompilatorn snappar upp direkt tycker jag, därför jag håller mig till c# istället för php. Php har säkert en del styrkor och man ska nog inte försöka förändra dess natur genom att försöka få den att emulera ett mer strikt språk som Conny verkar vilja göra här.
Tror inte riktigt jag hänger med. Hur skulle en kompilator se att du använt fel metodnamn? Jag menar, du skriver ett test som gör det möjligt att te.x skriva och läsa ett namn-attribut i en user-klass. Skulle du stava fel här så finns det ingen kompilator som säger till.

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.
Nerix är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-31, 03:15 #2
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av Nerix Visa inlägg
Tror inte riktigt jag hänger med. Hur skulle en kompilator se att du använt fel metodnamn? Jag menar, du skriver ett test som gör det möjligt att te.x skriva och läsa ett namn-attribut i en user-klass. Skulle du stava fel här så finns det ingen kompilator som säger till.

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.
Nej du har inte insett vad en kompilator gör.

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
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-07-31, 09:48 #3
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av ConnyWesth Visa inlägg
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

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.
Du kanske inte insett det, men om du försöker använda en odeklarerad variabel för annat än tilldelning så får du en notis om det. Så om du gör en tilldelning till fel variabelnamn kommer du också få en notis om det när du försöker accessa den senare.

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.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 03:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017