Nevezd meg

Ha meg tudod nevezni, uralkodhatsz rajta! - indián közmondás

Ha hiszed, ha nem, a dolgok helyes elnevezése nagyon nagyon és nagyon fontos! Ha jók a nevek, akkor:

Lássuk!

A domain

Huhú.. Na mi is az hogy domain? Vannak ugye domain nevek, mint pld. google.com, meg a számítógépeket üzemeltető informatikusok is szoktak dobálózni olyanokkal, hogy "nem jó a domain jelszó". Vannak public-domain információk, mint például a Wikipedia... Akkor mit jelenthet a domain?

Mittudomain? :)

Egyszerűbb, mint gondolnád. A domain csak annyit tesz: "tartomány", azaz valami nagy dolognak egy kisebb része.

A google.com az összes .com végű internet cím közül azok összessége, amiket a Google birtokol. Az iskolai hálózatos jelszavak a világ összes számítógépe közül csak arra a néhányra érvényes, ami az iskolai hálózatba van kötve. A public domain tudás az összes tudás közül az a tudás, ami nyilvános és mindenki számára ingyenesen elérhető.

Amikor egy programot készítünk, azt is általában valami célból csináljuk. Olyan programot senki sem tud csinálni ami a világ összes kiszámolni valóját kiszámolja, a világ összes zenéjét lejátssza közben, és a világ összes filmjét is tartalmazza. A mi programjaink a valóságnak csak egy kicsi szeletével foglalkoznak - és ez a mi problémakör-tartományunk, vagy röviden a domain-ünk.

Például, ha geometriai programot csinálsz, ami kiszámolja a kör területét, kerületét, akkor tisztába kell lenni olyan fogalmakkal, mint a kör területének és kerületének a képlete, meg hogy mi az a Pi.

Ha például egy óra programot csinálunk, akkor tisztába kell lenni azzal, hogy hogyan telik az idő, mi az hogy óra, perc, másodperc. Ez gondolom eddig nem annyira nehéz :) de itt jöhetnek még az időzónák, szökő-másodpercek (igen, egy perc 60 másodperc általában de néha 61), és egy csomó további turpisság.

Ha olyan programot csinálsz, ami kiszámolja, hogy havonta 10 000 Ft-ot félretéve mennyi pénzed lesz nyugdíjas korodra, akkor tudni kell olyan fogalmakat, hogy kamatos kamat, meg kamatláb, meg jövőérték.

Mint látod, mindenféle programnak saját kis problémaköre van. Vannak elég egyszerűek (tipikusan a matek képlettel kifejezhető problémák), de vannak olyanok is, amiket elképzelni is nehéz (például az emberi beszéd felismerése és értelmezése).

A domain dictionary

A dictionary azt jelenti, hogy (szó)jegyzék, szótár. Itt arra kell gondolni, hogy egyszerűen végiggondoljuk, hogy az adott programban milyen szereplők, tulajdonságok, műveletek lesznek, és eldöntjük, hogyan hívjuk őket.

Például, a Kocsma progiban az innivalót hívhatjuk piának, italnak, pohárnak, stb... De ha az egyik helyen piának hívjuk, másik helyen italnak, akkor feleslegesen szórakoztatjuk magunkat ezzel. Sokkal könnyebb lenne mindig ugyanúgy hívni.

| Az ember aki kocsmázik            | Ember    |
| Az összes ital gyűjtőneve         | Innivalo |
| A sör innivaló neve               | Sor      |
| A bor innivaló neve               | Bor      |
| Az erős innivaló neve             | Palinka  |
| Ahol az egész szimuláció történik | Kocsma   |

Főnevek és igék

Minden attribútum az egy tulajdonság, tehát főnév. Például:

Minden metódus valamit csinál, tehát ige. Például:

Minden osztály valami objektumot (azaz tárgyat) modellez, ezért főnév:

Angolul, please

A helyzet az, hogy magyarul a világ méretét tekintve igen kevesen értenek. Az egész Internet 0.3%-a van magyarul - így elég nagy kitolás, ha valamit magyarul nevezünk el. Három okból is:

Szóval, angolul az attribútumok neve ugye főnév, tehát:

Angolul a getterek:

Angolul a setterek:

Angolul azok a metódusok, amik valamit csinálnak (azok ugye igék)

Ha ezeket sikerül betartani, akkor egészen kényelmesen olvasható programot kapunk!

akkor... akkor a toString() az micsoda? Nem is getter és nem is csinál semmit sem! Sajnos ez még a 90-es évekből megmaradt régiség. Hasonlóan régiség a valueOf, például Integer.valueOf("123") a szöveg értékét visszaadja számként. A Java 8-tól a sima of() metódust használják konverzióra az új beépített Java osztályok - de a régi cuccokat nem lehet csak úgy kidobni, hiszen a világ 3 milliárd Java-t futtató eszköze még használja a régi cuccokat is.

De miért kell nekem angolul írni mindent?

Mert csak így lesz a tudásod piacképes. Ezen felül, erősen inkonzisztens, ha a programban a Java utasítások angolul vannak, viszont az attribútumok, osztályok, metódusok magyarul.

Akkor már lehetne az egész magyarul, hogy mindent jól értsünk, nem?

Logikus és érthető!

Szóval behoz, mint import. Okés. nyilvános osztály - ez egy public class lesz, okés. nyilvános nyugvó üres fő - ez akkor public static void main A Húr az... az a String? Azaz! Az AktaOlvasó meg a FileReader, amivel file-okat... izé, "aktákat" lehet olvasni. A próbáld - elfogd a try catch... de aztán az ember eldobja az egeret ettől. Neked érthető???

Nevezéktan

Angol főneveket használjuk az attribútumok és az osztályok elnevezésére. Angol igéket a metódusok elnevezésére. Csinálj domain-dictionary-t, hogy egy dolgot mindig ugyanazzal a névvel nevezz meg.