"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
De last die het op de proccessor ligt is eigenlijk redelijk te verwaarlozen. Dit soort micro optimalisaties zijn zeker waneer je naar de voordelen van de tweede manier kijkt verwaarloosbaar.
Door je gegevens via de functie te omsluiten hoef je op andere plekken niet te weten hoe dat users datatype eigenlijk is opgebouwd. Je hebt simpele duidelijke functies om gegevens op te halen die duidelijk aangeven welke parameter wat voorsteld (key en propertie). Wijzig je nu om wat voor reden dan ook de manier waarop je users bijhoudt, dan hoef je dit alleen maar in die ene functie aan te passen en nergens anders.
Je tweede voorbeeld is nog niet helemaal optimaal. Het maakt nog steeds gebruik van een globale variabele. Nog beter zou het zijn waneer je dit geheel in 1 class opneemt. Alle bewerkingen zitten dan ook bij de data.
Door je gegevens via de functie te omsluiten hoef je op andere plekken niet te weten hoe dat users datatype eigenlijk is opgebouwd. Je hebt simpele duidelijke functies om gegevens op te halen die duidelijk aangeven welke parameter wat voorsteld (key en propertie). Wijzig je nu om wat voor reden dan ook de manier waarop je users bijhoudt, dan hoef je dit alleen maar in die ene functie aan te passen en nergens anders.
Je tweede voorbeeld is nog niet helemaal optimaal. Het maakt nog steeds gebruik van een globale variabele. Nog beter zou het zijn waneer je dit geheel in 1 class opneemt. Alle bewerkingen zitten dan ook bij de data.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Janoz - dank je! Zou iemand een voorbeeld kunnen geven van hoe je dit voorbeeld in een class uitwerkt?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| class User { private $name; private $pass; public function __construct($name, $pass) { $this->name = $name; $this->pass = $pass; } // .. dtor, whatever public function getName() { return $this->name; } public function getPass() { return $this->pass; } } // encapsulatie van users, die bijvoorbeeld uit een db komen class UserDAL { public static User getUserById($id) { // vraag data op uit (bijvoorbeeld) een database $name = 'val uit db'; $pass = 'val uit db'; $user = new User($name, $pass); return $user; } } // Nu kun je zeggen: $user = UserDAL::getUserById(0); echo 'User 0 heeft als naam "'.$user->getName().'" en als wachtwoord "'.$user->getPass().'"<br>'; |