This blog has moved to http://ikhwanhayat.net

Thursday, March 30, 2006

Nama Pendek: Re, Nama Panjang: Amore

Via Jeff Atwood's Coding Horror, tersampai ke blog entry ini: "Naming Java Classes Without a 'Manager'", yg menyarankan supaya tak gunakan perkataan "manager" sbg nama class. Contohnya mcm SessionManager, ConnectionManager, PolicyManager etc. Sebab, ia vague dan mengelirukan. Skop tugas "manager" tu tak jelas. Article tu seterusnya mencadangkan utk guna perkataan Herder, Bucket, Pool, dan Supervisor. Ok, walaupun pun mcm tak berapa intuitive, tapi aku rasa memang membawa maksud yg lebih tepat tentang tugas class tu. Kerja software developer ni memang kita juggle with a lot of names most of the time. Ingat nama variable la, nama method la. Sama ada yg kita punya sendiri atau dari library/framework yg kita guna. Banyak maklumat kena sumbat dlm kepala hotak tu dlm satu2 masa. Patutlah aku selalu lupa nama orang. Macam jiran2 sebelah rumah, dan akak jual nasik lemak kat pam minyak tu. Tak ingat aku. Apatah lagi nama kucing peliharaan makcik yg rumah bumbung hijau kat hujung kampung tu. Bukan senang nak bagi nama ni sebenarnya. Sedangkan orang bagi nama anak 3 tahun sekali pun susah, ini pulak nak bagi nama pada sesuatu setiap hari. Nak bagi nama mestilah nama bagus2. Barulah bangga, ye tak?. Supaya nanti kalau orang baca code kita dia akan cakap, "Fulemek, best siyut nama public static variable kau ni! Jom aku belanja makan. Secret Recipe nak?" Jeff memetik kandungan buku Code Complete tentang cara2 memilih nama:

  1. Describe everything the routine does
    And we mean literally everything. If that makes the name ridiculously long, the name isn't the problem. Your routine is.
  2. Avoid meaningless, vague, or wishy-washy verbs
    Like UrlManager, or HandleOutput(), or PerformServices(). Be specific. What does it do? If you can't answer that question succinctly, it may be time to refactor the code until you can.
  3. Don't differentiate routine names solely by number
    I include this only for completeness. If you ever find yourself writing OutputUser1() and OutputUser2(), God help you. And God help the team you work with.
  4. Make names as long as necessary
    According to McConnell, the optimum name length for a variable is 9 to 15 characters; routines tend to be more complex and therefore deserve longer names. Make your names as long as they need to be in order to make them understandable.
  5. For functions, try using a description of the return value
    An easy, straightforward rule. Some examples are printer.IsReady(), pen.CurrentColor(), etcetera.
  6. Use opposites precisely
    For every Open(), there should be a Close(); for every Insert(), a Delete(); for every Start(), a Stop().
  7. Establish conventions for common operations
    This is best illustrated with an example, and McConnell provides an excellent one:

    employee.id.Get()
    dependent.GetId()
    supervisor()
    candidate.id()

    Now how do I get an Id again?

Bagus betul. Tak pernah pulak terfikir aku pasal kalau susah sangat nak pilih nama tu mungkin class/method kita tu tak berapa betul. Tak cukup cohesive mungkin? Satu lagi yg aku perasan, programmer Java dan .NET ni dia suka nama yg panjang2 mcm "RegisterStartupScript". Aku pun sekarang suka pakai nama mcm ni. Kalau dulu masa zaman C/C++, ikut2 adat dia pakai nama ringkas2 je, "regStartScr" mungkin. Kalau ikut programmer C/C++ ni anak2 pun kena bagi nama pendek2, mcm Ali bin <insert_fathers_name_here>, atau Alif bin <insert_fathers_name_here>, atau Salmah binti <insert_fathers_name_here>. Barulah save space. Dlm C++, tanda < > tu maksudnya dia adalah template. Atau kau yg anak2 muda ni, yg kenal C# je ni, panggil dia generic lah.

5 Comments:

At 3/31/2006 11:29:00 am, Blogger ryzam said...

susah juga nak pilih nama untuk class dan method supaya sesuai dgn responsility class tersebut..

saya suka guna nama yang panjang supaya apabila lihat nama class atau method .. dah dpt agak.. kerja yang class akan lakukan.

 
At 3/31/2006 03:51:00 pm, Anonymous Anonymous said...

salam.

saya selalu baca blog ni. memang menarik.

nak tanya.
tahu tak tentang intelligent document, (fokus : adobe-pdf).

boleh tak kita buat sistem dengan bantuan pdf ini dengan dreamviewer sebagai layout, language ASP.net, dan database guna SQL server.

maksudnya sistem itu dibuat dengan bantuan pdf.
jadi kita boleh guna kan intelligent document itu membantu kita save data dalam sistem itu nanti sama ada secara online mahupun offline...

logik tak?

 
At 3/31/2006 05:28:00 pm, Anonymous Anonymous said...

ryzam: aaah, "responsibility". thats the word! ada ke aku pakai perkataan "tugas".. kampung betul..

cik anonymous: menarik? terima kasih..

intelligent document? baru first time dengar..

aku programmer cabuk je. takat web application utk input, lepas tu renegate report on PDF tu tahu lah..

mungkin pembaca lain tahu?

 
At 4/01/2006 01:26:00 am, Blogger libelly said...

secret recipe mahal la... sixth floor la...can ar?

 
At 4/01/2006 09:47:00 am, Blogger Ikhwan Hayat said...

This means that u've seen the awesome public static variable la.. shhh, don't tell the name here, nanti diorang tiru.. :P

 

Post a Comment

<< Home