Programátorův pohled na svět

v

Re:Programátorův pohled na svět
« Odpověď #165 kdy: 15. 01. 2016, 14:50:44 »
Aerable je stejným nesmyslem jako IArea.
jak je to teda správně?


Kit

Re:Programátorův pohled na svět
« Odpověď #166 kdy: 15. 01. 2016, 14:55:16 »
Aerable je stejným nesmyslem jako IArea.
jak je to teda správně?

Bylo by dobré, kdyby sis ten odstavec dočetl až do konce. Snad v něm najdeš odpověď.

v

Re:Programátorův pohled na svět
« Odpověď #167 kdy: 15. 01. 2016, 14:58:24 »
Aerable je stejným nesmyslem jako IArea.
jak je to teda správně?

Bylo by dobré, kdyby sis ten odstavec dočetl až do konce. Snad v něm najdeš odpověď.
dočetl hned napoprvé, konkrétní odpověď tam skutečně není

k

Re:Programátorův pohled na svět
« Odpověď #168 kdy: 15. 01. 2016, 15:05:05 »
Aerable je stejným nesmyslem jako IArea.
...
tak to rozhraní pojmenuji Printable

Logicky z toho vyplývá že Printable je stejným nesmyslem jako IPrint.

Kit

Re:Programátorův pohled na svět
« Odpověď #169 kdy: 15. 01. 2016, 15:14:27 »
Aerable je stejným nesmyslem jako IArea.
...
tak to rozhraní pojmenuji Printable

Logicky z toho vyplývá že Printable je stejným nesmyslem jako IPrint.

Nikde není v požadavcích napsáno, co má ten obdélník umět. Tak jsem si vymyslel metodu print(), protože mě v tu chvíli nic lepšího nenapadlo. Pokud nepotřebuje umět nic, není ani nutné žádné rozhraní - to je občas také užitečné, pokud si vystačíš se standardními metodami, které umí každý objekt.


v

Re:Programátorův pohled na svět
« Odpověď #170 kdy: 15. 01. 2016, 15:23:30 »
Aerable je stejným nesmyslem jako IArea.
...
tak to rozhraní pojmenuji Printable

Logicky z toho vyplývá že Printable je stejným nesmyslem jako IPrint.

Nikde není v požadavcích napsáno, co má ten obdélník umět. Tak jsem si vymyslel metodu print(), protože mě v tu chvíli nic lepšího nenapadlo. Pokud nepotřebuje umět nic, není ani nutné žádné rozhraní - to je občas také užitečné, pokud si vystačíš se standardními metodami, které umí každý objekt.
píše se tam o objektu, který "má plochu", např. obdélník, takže jaký je správný název metody a rozhraní?

Kit

Re:Programátorův pohled na svět
« Odpověď #171 kdy: 15. 01. 2016, 15:39:08 »
píše se tam o objektu, který "má plochu", např. obdélník, takže jaký je správný název metody a rozhraní?

Co znamená "má plochu"? Slovo "má" vyjadřuje vlastnicví, nikoli schopnosti. Plochu si v konstruktoru uložíš do privátních atributů, na to rozhraní nepotřebuješ. Název metody ani rozhraní tedy nelze odvodit. Obdélník, který má plochu, ji klidně může mít a nepotřebuje k tomu žádné rozhraní. Místo rozhraní pak napíšeš slovo Object a všichni budou spokojeni.

v

Re:Programátorův pohled na svět
« Odpověď #172 kdy: 15. 01. 2016, 15:42:53 »
píše se tam o objektu, který "má plochu", např. obdélník, takže jaký je správný název metody a rozhraní?

Co znamená "má plochu"? Slovo "má" vyjadřuje vlastnicví, nikoli schopnosti. Plochu si v konstruktoru uložíš do privátních atributů, na to rozhraní nepotřebuješ. Název metody ani rozhraní tedy nelze odvodit. Obdélník, který má plochu, ji klidně může mít a nepotřebuje k tomu žádné rozhraní. Místo rozhraní pak napíšeš slovo Object a všichni budou spokojeni.
co když chci např. spočítat celkovou plochu kolekce dvourozměrných objektů?

Kit

Re:Programátorův pohled na svět
« Odpověď #173 kdy: 15. 01. 2016, 16:16:19 »
co když chci např. spočítat celkovou plochu kolekce dvourozměrných objektů?

To ale nebylo v původním zadání a právě sis vymyslel to "co když".

Tak si vymysli název metody pro výpočet plochy libovolného objektu (např. calculate() nebo areaCalculate()) a z toho si odvoď název rozhraní (např. Calculable nebo AreaCalculable).

Bohužel pro "výpočet plochy" nemáme v češtině jedno slovo. Slovo "plocha" může mít více významů a nelze ho tedy otrocky přeložit na "area". Podobně ten anglický výraz má i další významy, než jen výpočet plochy.

peva

Re:Programátorův pohled na svět
« Odpověď #174 kdy: 15. 01. 2016, 16:36:33 »
Tak já nevím, že s těma názvama tak naděláte. Každé lepší EDI má v sobě refaktorizaci a když blbě zvolím název, tak to za 5 sekund opravím hned na všech místech. A o tomto to přesně je, diskuze se vedou o nevýznamných detailech, ale o archtektonických aspektech výstavby aplikací tady žádné přínostné diskuze nejsou.

Kit

Re:Programátorův pohled na svět
« Odpověď #175 kdy: 15. 01. 2016, 16:49:42 »
Tak já nevím, že s těma názvama tak naděláte. Každé lepší EDI má v sobě refaktorizaci a když blbě zvolím název, tak to za 5 sekund opravím hned na všech místech. A o tomto to přesně je, diskuze se vedou o nevýznamných detailech, ale o archtektonických aspektech výstavby aplikací tady žádné přínostné diskuze nejsou.

Pro přejmenování metody v rozhraní musím mít hodně dobrý důvod, jinak tím mohu ohrozit značnou část projektu. Co když na třídách, které na něm závisí, někdo jiný udělal změny? Někdo další ten merge musí udělat a nemusí to být zrovna triviální operace.

Kromě toho tím "svým refaktorováním" porušuješ OCP.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Programátorův pohled na svět
« Odpověď #176 kdy: 15. 01. 2016, 17:09:57 »
Obvykle stačí jedno slovo, slepence nebývají potřebné. Název proměnné - podstatné jméno, název metody - sloveso, název rozhraní - přídavné jméno. Dodržování těchto pravidel krásně zpřehlední aplikaci, čte se to jak pohádka.

Ty krásně přehledné jednoslovné názvy bych chtěl vidět. Možná se to čte jako pohádka, akorát ji pochopí jenom autor, prvních pár dnů... Ale co, zaplaceno se dostane a po nás přece potopa...

Ono jde spíše o konvenci, například jen debil pojmenuje immutable metodu slovesem.

Pokud dodržuješ pravidlo Tell, don't ask, tak ti moc prostoru pro immutable metody nezbývá. Ale i tak: Máš snad něco proti názvům metod seek(), find() nebo search(), které používám u kolekcí?

Citace
Se správným používáním konvencí také souvisí alespoň elementární znalost angličtiny, aby se nestalo, že si někdo někde přečte, že jména rozhraní mají být adjektiva, a rozhraní pro vše, co má plochu (obdélník apod.), nazve Areable, čili verbální příponu dá na substantivum (jak jsme si zde na fóru mohli nedávno přečíst, takový dement by neměl dělat ani v PHP).

FUD.

Aerable je stejným nesmyslem jako IArea. Základem pro tvorbu názvů rozhraní nemá být substantivum, ale verbum. Stačí se podívat na to, co rozhraní obsahuje: Seznam hlaviček metod - tedy schopností, které má daný objekt splňovat. Z toho se dá odvodit název rozhraní. Pokud je tam třeba metoda print(), tak to rozhraní pojmenuji Printable a implementuji ho ve třídě Rectangle apod.
Areable jsi tehdy použil ty...

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Programátorův pohled na svět
« Odpověď #177 kdy: 15. 01. 2016, 17:11:03 »
Aerable je stejným nesmyslem jako IArea.
jak je to teda správně?
Příčestí - HavingArea

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Programátorův pohled na svět
« Odpověď #178 kdy: 15. 01. 2016, 17:14:19 »
Aerable je stejným nesmyslem jako IArea.
...
tak to rozhraní pojmenuji Printable

Logicky z toho vyplývá že Printable je stejným nesmyslem jako IPrint.

Nikde není v požadavcích napsáno, co má ten obdélník umět. Tak jsem si vymyslel metodu print(), protože mě v tu chvíli nic lepšího nenapadlo. Pokud nepotřebuje umět nic, není ani nutné žádné rozhraní - to je občas také užitečné, pokud si vystačíš se standardními metodami, které umí každý objekt.
píše se tam o objektu, který "má plochu", např. obdélník, takže jaký je správný název metody a rozhraní?

Správně je computed property area a v jazyce, který to neumožňuje, metoda area() v rozhraní HavingArea (případně WithArea, což je PP)

Kit

Re:Programátorův pohled na svět
« Odpověď #179 kdy: 15. 01. 2016, 17:37:26 »
Aerable je stejným nesmyslem jako IArea.
Areable jsi tehdy použil ty...

No a?