Posto mitke voli primere, vraticu se na primer vrlo brzo, nego pre toga da razjasnim nesto, posto vidim da sam lose shvacen.
Ti si se slozio sa krksijem koji je rekao:
Citat:
Tacno je da se broj klasa drasticno povecava, ali zato kasnije mnogo manje imas problema sa izmenama.
Vidis kontradiktornost?
Objasnjenje: imas jednu klasu koja ima kilometarski kod. Ona radi sve i svasta, tj obavlja vise zadataka. Sta se desava ako tebi treba samo deo koda iz te klase, recimo za neku obradu, kako ces da ga iskoristis? Odgovor: nikako. Zar nije bolje tu klasu razbiti na manje, recimo 5-6 klasa i svakoj dodeliti neku odgovornost. Te manja klasa mozes ponovo da upotrebljavas ako ti zatreba neka funkcionalnost koja je u njima. Lako mozes i da ih menjas, jer su ne zavisne medjusobom. Eto, u ovoj situaciji si dobaio 5-6 puta vise klasa nego ranije, ali barem ti se kod nece ponavljati i neces morati da radis copy-paste. (Ovo je samo jedan od mnogo primera zasto klasa treba razdvajati i to da to nije skup bespotrebnih klasa i da se tako sistem ne pretrpava)
a sada idemo na primere:
Ponovicu se: najlakse je dodavati i dodavati i dodavati... I lako je prepisivati definije sa neta; sve ovo sam ja vec procitao ranije, zaista nema potrebe da radis copy&paste. Nisam najpametniji na svetu, to je sigurno, ali dok ne vidim na prakticnom primeru da je nesto bolje od toga kako radim, necu koristiti. A moji uslovi su jednostavni: API da bude sto manji, da izmena bude sto laksa, da klasa bude sto manje jer necu dupliranje funkcionalnosti... Nisam zahtevan, zaista. Na primeru, molim te.
posto mislis da samo prepisujemo sa definicije sa neta, a nema primera iz prakse evo i njih:
prvo. nisi uradio ono sto sam te pitao u vezi sa datumima. Kako mislis da na svakom razicitom mestu pikazes razlicit datum formatiranja ?
To je primer iz tvoje prakse, a ja sam samo korisnik koje je to trazio da uradis. Zanima me resenje tvog problema jer vidim da ti je formata datuma kruto vezan.
public function getCreatedAt()
{
$date = new DateTime($this->created_at);
return $date->format(Settings::getInstance()->getDateFormat()) ;
}
samo molim te, nemoj ponovo da mi odgovotis da se to nece nikad desiti, nego me samo zanima kako bi ti to najbezbolnije resio.
drugo.
a sta ako ti korisnik zahteva da u zavisnosti od toga da li ljudi uploaduju pesmu is Srbije ili ostatka sveta koristis getID3 ili getID4 ? Recimo, ako je korisnik iz Srbije, da se koristi getID3, a ako nije, onda getID4.
p.s. Mozda sam malo dao glup razlog, ali ne ulazi u to, samo me zanima kako bi resio to, posto si se i ovde "kruto" vezao za odredjeni paket?
i ovde odgovor "to se nikad nece desiti" je ne prihvatljiv, jednostavno me zanima tvoje misljenje :)
trece.
Navescu ti problem koji sam ja imao u praksi. Naime, stvari stoje ovako: Postoji klasa automobil koja ima svoju cenu i njen izgled je ovakav:
class Automobil{
private $cena;
public function getCena(){
return $this->cena;
}
}
ovo sam takodje resavao, da ne mislis da ima neke veze sa prethodnim primerom gde se pominju brisaci i akumulator :)
naravno, klasa nije bas izgledala ovako, bilo je tu jos dosta atributa i drugih stvari, ali ja sam samo zeleo da pojednostavim sve to i da prikazem problem.
e sad, kasnije sam dobio zahtev da taj automobil moze da se "nabudzi" alarmom. Korisnik ima mogucnost da vidi cenu samo automobila, a takodje moze da vidi cenu automobila sa alarmom (znaci zbir obe). To mu treba omoguciti. U ovom primeru, on moze da dobije samo cenu automobila. Kako bi ovo resio ?