![]() |
Citat:
|
Citat:
|
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.
|
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. |
Citat:
Helst skulle jag önska att man kan deklarera: public class Person { // declataion of private variables private _firstname=""; private _lastname=""; // Jag skippar konstruktorn i detta exempel.... public __set_firstname($value) { $this->_firstname = $value; } public __get_firstname() { return $this->_firstname; } public __set_lastname($value) { $this->_lastname = $value; } public __get_lastname() { return $this->_lastname; } // Jag skippar även ToString-metoden.... } När man sen accessar egenskapen så vill jag göra så här: private $kalle = new Person(); $kalle.firstname = "Kalle"; $kalle.lastname = "Pettersson"; echo $kalle.firstname . " " . $kalle.lastname Resultatet ska då bli: "Kalle Pettersson" OBSERVERA att det inte alls är samma sak som att ha en funktion som geter getFirstName och en funktion som heter setFirstName, det är INTE getters och setters.... Ni som har jobbat med andra objektorienterade språk vet nog vad jag menar... . . . |
Citat:
Om du inte begriper objektorienterad programmering så bör du inte komma med fullkomligt idiotiska inlägg här i forumet. |
Citat:
Dvs exempelvis som i C# där man kan ha en metod för att validera värden när de sätts till en metod, 'är värdet utan för det giltigas gräns så kan man endera låta bli att lagra värdet i klassen eller göra en Throw Exception("Med ett vettigt felmeddelande").... När man läser av ett värde så kan man exempelvis ha en automatisk konvertering, formatering, lagring av accessstatistik eller inläsning från någon extern källa. detta utan att programmeraren som använder egenskapen behöver bekymra sig över hur det går till. |
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. |
Så här skulle motsvarande program se ut i C# med de metoder och properties jag var ute efter:
Kod:
using System; Kod:
using System; Kod:
using System; Kod:
Visa alla Person i personer... |
Efter att ha testkört koden under Ubuntu 12.04 med mono-mcs (en C# clone i Linux-miljön) så kan jag konstatera att resultatet av testkörningen blev identiskt med Windows 7.
Jag bifogar Makefile för den som vill testa: Kod:
################################################################# |
Alla tider är GMT +2. Klockan är nu 18:49. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson