Jak se vypořádat s Nette\Object

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Matějka
Moderator | 6445
+
0
-

Jsem spis pro zmineny TSmart, nez TObject.

Šaman
Člen | 2635
+
0
-

Varianta s T na začátku se mi líbí – osobně takto traity odlišuji, aby bylo na první pohled jasné, zda se jedná o třídu, traitu, nebo rozhraní I.

Pak TObject je velmi výstižné – funkcionalita, kterou dodteď známe jako Nette\Object. Navíc ten Nette\Object zůstává, ne?

TSmart neurazí. Nebo třeba ta Comfy.

Pod Strict si představí jen tu strict funkcionalitu, Static mi přijde úplně zavádějící.


Dvojice TStrict a TObject by se mi líbila nejvíc.

castamir
Člen | 629
+
0
-

TSmartObject nebo TSmartClass.

Mimochodem ten prefix T pro Traity je vybornej napad. Tuhle konvenci si s dovolenim pujcim :)

Václav Pávek
Backer | 97
+
0
-

castamir napsal(a):

TSmartObject nebo TSmartClass.

Mimochodem ten prefix T pro Traity je vybornej napad. Tuhle konvenci si s dovolenim pujcim :)

tohle se mi zamlouvá

Pavel Kouřil
Člen | 128
+
+1
-

Jak jsem říkal už na gitteru; osobně bych preferoval EnhancedBehavior (a StrictBehavior, apod.), protože ta traita mění chování toho objektu (a dělá z něj něco, co „by default“ není).

Svaťa Šimara
Člen | 98
+
-5
-

Prosím neprefixujte T.... Prefixovalo se někdy v dobách C, když to lidem přišlo jako dobrý nápad. Taky v databázi neprefixujete spojovací tabulky jenom proto, že jsou spojovací…

co vypadá líp?

use Strict;
use TStrict;

use Object;
use TObject;

Pokud už rozlišovat traity, tak jsem spíš pro to říct, že daná třída něco je:

use IsStrict;
use IsObject;
Šaman
Člen | 2635
+
+5
-

Prefixuje se kontinuálně celou dobu. Všechna rozhraní jsou prefixována I.
To is je trochu zvláštní – instance přece JE zároveň třídou všech svých předků a rozhraní. Presenter JE komponenta, JE to Nette\Object a JE to Response.

Pokud to nebude rozlišené namespacem, tak je třeba název Object velmi matoucí. Každý ví, že doteď se od Objectu dědilo a najednou si musím pamatovat, že Object je traita která se používá. S prefixem je to jasné.

  • extends Foo
  • implements IBar
  • use TLorem

Edit: vlastně nejde až tak o to prefixování, ale o jasné rozlišení co je daný prvek zač. Bez prefixu s velkým písmenem na začátku jsou podle Nete konvence třídy. Ostatní nonPHP soubory jsou malými písmeny a rozlišuje typ se rozlišuje příponou. Takže už jen v seznamu souborů vidím, co je co (třída, rozhraní, šablona, konfigurace, zbude několik málo výjimek). Pokud by traity nebyly jasně odlišitelné, pak mi tuto výhodu vezmou.

Editoval Šaman (8. 4. 2016 10:05)

Svaťa Šimara
Člen | 98
+
-1
-

Prefixování I nechme stranou, to je jiný příběh.

Zkusil jsem si nakreslit diagram tříd, kde se vyskytuje trait, a i Is... vypadá prapodivně.

V diagramu tříd je jasně vidět, že daný prvek je trait/třída/rozhraní, IDE napoví, co je daný prvek zač. Ne, prefixování je zcela zbytečné.

Souhlasím, že roky rokoucí je Object předek, od kterého se dědí, takže nově vzniklá trait by se měla jmenovat jinak.

David Grudl
Nette Core | 8136
+
+4
-

Tak nakonec je to SmartObject a StaticClass.