NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Luboš Hnědý:9.9.2017 14:13

Ahoj mám takový dotaz, předem se omlouvám,. že jsem dal tak obecný dotaz. Mám třídu, která mě propojuje s databází a mám zde metody na přidání záznamu atd. atd. Chci se zeptat co je z hlediska konvence kódu lepší. Mám metodu pro přidání uživatele do databáze a teď moje otázka je lepší udělat konstruktor kde si naastavím třídní atributy jmeno a heslo nebo to dát jako parametr metody ? Používám tyto proměnné ve více metod. Díky moc za každou radu.

 
Odpovědět
9.9.2017 14:13
Avatar
Majkel
Člen
Avatar
Majkel:9.9.2017 18:20

Ahoj, podíval bych se na nějaké návrhové vzory. Například Repository, UnitOfWork případně CQRS. Pokud chceš poradit lépe, dej tady ukázku kódu oné třídy, takto abstraktně se špatně radí.

Jinak k tvému dotazu. Třídu bych asi nechal pouze inicializovat připojení k DB (nevím, jestli používáš nějaký ORM jako EntityFramework, NHibernate, Dapper, nebo si to píšeš sám) a Uživatele bych posílal jako parametr do metody.

Editováno 9.9.2017 18:21
 
Nahoru Odpovědět
9.9.2017 18:20
Avatar
David Dostal
Tvůrce
Avatar
Odpovídá na Luboš Hnědý
David Dostal:9.9.2017 19:29

Jednoduše řečeno, potřebuje třída jméno a heslo ještě k něčemu jinému, nebo jsou potřeba pouze v konkrétní metodě?

Pokud s údaji pracuje celá třída, předával bych je konstruktorem. Tím zajistíš, že třída bude vždy ve validním stavu.

Když údaje předáš metodě jako argumenty, zase tím osvobodíš metodu od dalších závislostí a půjde jednoduše testovat nebo použít jiným způsobem. To bys pak ale mohl jako argument předávat i databázi a třída by trochu začala ztrácet smysl..

 
Nahoru Odpovědět
9.9.2017 19:29
Avatar
Majkel
Člen
Avatar
Odpovídá na David Dostal
Majkel:9.9.2017 20:17

Ahoj, dovolím si reagovat.

To bys pak ale mohl jako argument předávat i databázi a třída by trochu začala ztrácet smysl..

například u ORM jako EntityFramework je právě smyslem třídy to, že všechny metody pracují v jednom contextu. Předávání každé třídě separátně mi nepříjde, jako dobré řešení, pokud k tomu není zvláštní důvod.

 
Nahoru Odpovědět
9.9.2017 20:17
Avatar
David Dostal
Tvůrce
Avatar
Odpovídá na Majkel
David Dostal:9.9.2017 21:50

Ahoj, já jsem asi předtím špatně pochopil otázku :-) Posílat uživatele jako parametr metody asi bude smysluplné řešení.

 
Nahoru Odpovědět
9.9.2017 21:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.