DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > DevProTalk > Opušteno
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

Opušteno Trenutak za pauzu - Ćaskanje. Sponzor: blogodak

Odgovori
 
Alati teme Način prikaza
Staro 28. 02. 2006.   #21
Gruja
Dejan Grujic
Professional
 
Datum učlanjenja: 29.09.2005
Poruke: 380
Hvala: 9
64 "Hvala" u 40 poruka
Gruja is on a distinguished road
Default

Programiranje nema veze ni sa jednom drugom inzenjerskom disciplinom. Ne postoje striktna pravila koja uvek vode do uspeha. Samo preporuke, iskustvo i osecaj.
Gruja je offline   Odgovorite uz citat
Staro 28. 02. 2006.   #22
kaizen
old school
Professional
 
Avatar kaizen
 
Datum učlanjenja: 07.02.2006
Poruke: 340
Hvala: 32
44 "Hvala" u 20 poruka
kaizen će postati "faca" uskoro
Thumbs up

Citat:
Originalno napisao Gruja
Programiranje nema veze ni sa jednom drugom inzenjerskom disciplinom. Ne postoje striktna pravila koja uvek vode do uspeha. Samo preporuke, iskustvo i osecaj.
Lepo rečeno.
kaizen je offline   Odgovorite uz citat
Staro 28. 02. 2006.   #23
dinke
Super Moderator
Invented the damn thing
 
Avatar dinke
 
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
dinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamen
Default

Evo i ja da se ukljucim u ovu nadasve interesantnu diskusiju

Da budem iskren, ne slazem se sa vecinom "saveta" koje je ovaj lik naveo. Ajmo redom:

10) Use exceptions
Slazem se sa svim navedenim. Uopste ne razumem sta je Joel sa onim tekstom hteo da kaze.

9) (Don't) Use unsigned integers for values that can only be positive
Neki jezici zaista ne omogucavaju definisanje unsigned vrednosti (PHP, Java), ali tamo gde je to jezikom omoguceno (C/C++) treba ga koristiti. Ne samo da se tako kreira robusniji kod, vec se stedi i memorija. Mozda nebitno za danasnje programe, ali kod baza nije isto koristiti big int kada recimo int unsigned zavrsava posao (veca tabela = sporija tabela).

8) (Don't) Design classes parallel to their physical counterparts
Takodje se apsolutno slazem sa ovom tvrdnjom, narocito sa delom da je inheritance "overrated". Licno sam vidjao neke PHP bibliotete gde je klasa koju koristim "10-to koleno" od osnovne klase. Mislim da bi svi pocetnici u OOP dizajnu trebalo da malo citaju Bruce Eckela, koji jednostavno savetuje koriscenje kompozicije kad god niste sigurni da li koristiti nasledjivanje ili kompoziciju. car have engine, car is not engine.

7) (Don't)Make sure your team shares a common coding standard
Ocigledno da autor teksta nikada nije morao da edituje fajl na kome su radila 3 programera gde je svako koristio sopstveni koding standard. Sto se mene tice pravila su sledeca:

- Postoji definisan koding standard za celu kompaniju ili je deo specifikacije projekta
ili
- (losije resenje) Svaki developer koristi svoj stil ali se prilikom izmena vec napisanog koda postuje standard koriscen u fajlu (na taj nacin barem nemas 3 stila u jednom fajlu)

6) (Don't)Write lots of comments
Komentare treba pisati, tamo gde je to potrebno. Dakle ne:

//incrementing i
i++;

nego

//moving to next element
i++;

i sl.

Inace, ja narocito insistiram na kreiranju API dokumentacije, pa je phpdocumentor stil komentara (pandan javadoc kod Jave) standardni deo koding specifikacije koju sam pominjao gore.

5) (Don't)Use accessors or properties rather than public fields
Ovo je vec jeres Necu ni da komentarisem
__________________
Caught in a Web|Blogodak
With great power comes great responsibility!

Poslednja izmena od dinke : 28. 02. 2006. u 11:27.
dinke je offline   Odgovorite uz citat
Staro 28. 02. 2006.   #24
Milos Vukotic
Knowledge base
Wrote a book
 
Avatar Milos Vukotic
 
Datum učlanjenja: 07.06.2005
Lokacija: Neđe ođe...
Poruke: 1.197
Hvala: 339
688 "Hvala" u 178 poruka
Milos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamen
Default

Citat:
Originalno napisao Gruja
Programiranje nema veze ni sa jednom drugom inzenjerskom disciplinom. Ne postoje striktna pravila koja uvek vode do uspeha. Samo preporuke, iskustvo i osecaj.
To se moze reci i za sve discipline koje se ticu rjesavanja problema. Sve izuzev prava.
__________________
Чак Норис може да си ги врзе врвките на чевлите со стапалата.
Milos Vukotic je offline   Odgovorite uz citat
Staro 28. 02. 2006.   #25
Ilija Studen
Direktor Kombinata
Invented the damn thing
 
Avatar Ilija Studen
 
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
Ilija Studen će postati "faca" uskoroIlija Studen će postati "faca" uskoro
Default

Poenta saveta br1 je da se ne trudiš da sve živo smisliš unapred, već da razmisliš, nažvrljaš neke osnovne beleške sebe radi na papir i kreneš da radiš. To je mnogo brže nego da razmisliš i posvetiš X dana na razradu kompletnog dizajna na papiru (koji može i da ne radi jer si propustio nešto izuzetno bitno).

Ako si disciplinovan programer i imaš kvalitetne igračke lako možeš da izađeš na kraj i sa izuzetno kompleksnim promenama na sistemu za relativno kratko vreme. Samo su od toga napravili bauk...

---------------

Što se 5tice tiče meni se izuzetno sviđa Ruby koji polja maskira sa accessorima. Npr:

Kôd:
car.max_speed = 250;
print car.max_speed;
Iza ovga stoje sledeći accessori:

Kôd:
class Car

  def max_speed
    @max_speed
  end

  def max_speed=(new_value)
    @max_speed = new_value
  end

end
Postoji i pojednostavljenje za pisanje accessora, ali ovo je samo kao primer.

Poslednja izmena od Ilija Studen : 28. 02. 2006. u 11:57.
Ilija Studen je offline   Odgovorite uz citat
Staro 28. 02. 2006.   #26
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

po meni accessori imaju smisla samo ako se unutar njih vrse neke provere vrednosti, formatiranje podataka, hvataju exceptioni ili tako nesto.. ako imas setter koji samo uradi property=value i nista drugo, koji mu je onda smisao? (a to se vrlo cesto vidja po raznim bibliotekama...)
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 28. 02. 2006.   #27
Petar Marić
Python Ambassador
Master
 
Avatar Petar Marić
 
Datum učlanjenja: 06.06.2005
Lokacija: Novi Sad
Poruke: 602
Hvala: 28
27 "Hvala" u 17 poruka
Petar Marić će postati "faca" uskoro
Pošaljite ICQ poruku za Petar Marić
Default

Amen.
Accessor abstrahuje pristup class member-u da se objekat ne bi doveo u nedozvoljeno/neodređeno stanje.
__________________
Python Ambassador of Serbia
Petar Marić je offline   Odgovorite uz citat
Staro 28. 02. 2006.   #28
Ilija Studen
Direktor Kombinata
Invented the damn thing
 
Avatar Ilija Studen
 
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
Ilija Studen će postati "faca" uskoroIlija Studen će postati "faca" uskoro
Default

Svež primer. Imam reklamnu kampanju koja ima vlasnika. Tokom prvog dela razvoja owner_name je bio varchar polje koje je sadržalo samo ime jer je to bilo dozvoljno da bi se zadovoljila prva specifikacija (owner_name je korišćen samo za statistike). Međutim, tokom rada sam došao do toga da mi owneri trebaju odvojeno pošto se na osnovu njih vrše neke druge kalkulacije (potreba da se globalni cenovnik zameni cenovnikom na nivou vlasnika i slične stvarčice). Izmena je bila veoma jednostavna:

PHP kôd:
// Stari kod

class Campaign {

  
/**
  * Return owner name
  *
  * @return string
  */
  
function getOwnerName() {
    return 
$this->columnValue('owner_name');
  }

}

// Novi kod, sitna izmena

class Campaign {

  
/**
  * Return owner object
  *
  * @return CampaignOwner
  */
  
function getOwner() {
    return 
CampaignOwners::findById($this->getOwnerId());
  }

  
/**
  * Return owner name
  *
  * @return string
  */
  
function getOwnerName() {
    if(
$this->getOwner() instanceof CampaignOwner) {
      return 
$this->getOwner()->getName();
    } else {
      throw new 
Exception('Owner is missing');
    }
  }


Da sam sve vreme tretirao owner_name kao klasično polje i pristupao mu sa $this->owner_name postojeći kod bez većih izmena ne bi mogao da odgovori na nove zahteve.

Accessori? Uvek!

Poslednja izmena od Ilija Studen : 28. 02. 2006. u 16:31.
Ilija Studen je offline   Odgovorite uz citat
Staro 04. 03. 2006.   #29
bojan_bozovic
expert
Master
 
Avatar bojan_bozovic
 
Datum učlanjenja: 20.12.2005
Poruke: 730
Hvala: 0
0 "Hvala" u 0 poruka
bojan_bozovic is on a distinguished road
Default

Citat:
On kaže:
"You should think before you code. Go ahead, but think for hours, not days."

Pošto se ti ne slažeš sa njim da li to znači da ti danima dizajniraš?
Tako moze u perlu da se zvrlja. Molim, program u C++ ne mozes da napravis a da prvo ne dizajniras sve. Najobicniji search&replace u tekst editoru da napises - algoritam za search&replace moras da imas gotov. Sto se saveta tice, veze nemaju sa zivotom.
bojan_bozovic je offline   Odgovorite uz citat
Staro 04. 03. 2006.   #30
kaizen
old school
Professional
 
Avatar kaizen
 
Datum učlanjenja: 07.02.2006
Poruke: 340
Hvala: 32
44 "Hvala" u 20 poruka
kaizen će postati "faca" uskoro
Thumbs down

Citat:
Originalno napisao bojan_bozovic
program u C++ ne mozes da napravis a da prvo ne dizajniras sve.
Ma daj. Je si li ti uopšte c++ programer?

Citat:
Originalno napisao bojan_bozovic
Sto se saveta tice, veze nemaju sa zivotom.
Zašto nemaju veze sa životom?
kaizen je offline   Odgovorite uz citat
Odgovori



Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
Koje ste .rs domene registrovali? Dzordz Opušteno 199 01. 07. 2010. 21:09
tekstovi oglasa koje obožavam Miloje Sekulic Opušteno 2 09. 01. 2009. 14:55
Slusalice. Koje ? [nq] Komunikacije 16 03. 10. 2006. 10:04


Vreme je GMT +2. Trenutno vreme je 20:22.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.