Rads78 0 Report post Posted March 10, 2005 A'kum...Nih aku ndak ajak ngkorang berbincang mengenai high quality programming. Cakap pasal how to program.. semua orang boleh program... tapi apa yang membezakan programmer dengan programmer yang lain adalah macam mana susunan, cara debugging, analysis, naming convention dan sebagainya. Selalunya dekat pusat pengajian tinggi jarang diaorang ajar pasal nih dan biasanya semua ini datangnya daripada pengalaman diri sendiri. So... cuba ceritakan bagaimana ngkorang selalu buat 1) Debugging process / method yg selalu digunakan2) Naming convention bagi method / sub / function / class yang ngkorang selalu guna3) Apa yang selalu ngkorang comment didalam atucara ngkorang4) Sekiranya ngkorang ndak pass parameter ke class / sub / method... cara apa yg ngkorang selalu pass?? Reference or value and why and when? 5) Sebelum membina program, apa analisis yg dilakukan untuk memastikan atucara itu berjalan dengan lancar?Please keep in mind that theres no idea that is a stupid idea (as in we can always elaborate it)... so mintak-mintak para programmer ataupun bakal programmer kat sini dapat berkongsi idea pasal bender alah nih semua.ps: Any recommendation for reading material for topics above?Wassalam Quote Share this post Link to post Share on other sites
naszari 0 Report post Posted March 11, 2005 W'salamHigh Quality Programing?? ermmm tapi kalau Software Quality Assurance tau ar...Erm Kalo nak membangunkan Program memang semua boleh tetapi kaedah bagi develop program itu yang menentukan quality program yang dibangunkan.Sesiapa yang ambik Software Engineerng tu dia tau ar kot dari pada pemintaan client, analisis, dokumentation dan memacam lagik aspek yang menentukan Qualitynya.... termasuk arr fasa implementasinya (programmer2 dok kat sini..) Quote Share this post Link to post Share on other sites
Rads78 0 Report post Posted March 11, 2005 Cool thanks.... anybody else? Quote Share this post Link to post Share on other sites
publicENEMY 0 Report post Posted March 14, 2005 1) Debugging process / method yg selalu digunakan2) Naming convention bagi method / sub / function / class yang ngkorang selalu guna3) Apa yang selalu ngkorang comment didalam atucara ngkorang4) Sekiranya ngkorang ndak pass parameter ke class / sub / method... cara apa yg ngkorang selalu pass?? Reference or value and why and when? 5) Sebelum membina program, apa analisis yg dilakukan untuk memastikan atucara itu berjalan dengan lancar?←1) usually manual tracing. ie printf(). kalau tak dapat gak, baru guna watch.2) hungarian notation3) fungsi(paling penting), rumus matematik, loop overview 4) value kalau data primitif. lain2 sume reference. AFAIK utk data primitif adalah lebih pantas kalau hantar value. kalau data dynamik(STL, link list) pakai reference(ada pilihan lain ker?)5) perancangan yg detail. memang leceh kalau tengah develope tetiba ada perubahan.bagi publicENEMY, high quality programming ialah apabila code reuseable, robust(boleh menyelesaikan pelbagai masalah ie selalu kod seolah2 untuk hasilkan library), pantas dari segi running timenya, boleh difahami oleh orang lain(komen).publicENEMY org opengl/computer graphics. dlm menghasilkan projek, banyak isu yang perlu diselesaikan dalam jumlah peruntukan resource yg terhad. oleh itu optimization merupakan satu aset yang tak ternilai. pendek kata, knowledge dari segi kemampuan mesin/hardware, maintaning numerical stability, cara mesin/hardware memproses data, dll perlu dipelajari.publicENEMY humbly spoke. Quote Share this post Link to post Share on other sites
Rads78 0 Report post Posted March 14, 2005 Thats sounds pretty cool publicEnemy... do you mind to elaborate more on list no 4 regarding passing parameter and if u have more information regarding optimization as well would be perfect. Like to hear more from youThanks Quote Share this post Link to post Share on other sites
publicENEMY 0 Report post Posted March 15, 2005 4) elaborationdata primitif adalah data int, float char dll. data compleks adalah kompilasi data2 primitif cth struct. data array publicENEMY treat ala2 cam data primitif(tapi kalau besar sangat terpaksa hantar reference aje). data dynamik adalah seperti array yg boleh dibesarkan/dikecilkan bergantung kepada keperluan. contohnya link list, trees. tapi publicENEMY tak construct sistem dynamik data, publicENEMY just guna STL(highly optimized, easy, clean).kalau data takat 2,4 atau 8 bytes(data primitif), publicNEMY just pass data. compiler maker boleh optimized yg ini. tapi untuk data bukan data primitif, amat susah untuk compiler maker optimized(pasal diorang nak kena measure cara kita berinteraksi). kalau data yg besar2(compleks, dinamik, array), publicENEMY hanya hantar reference aje. reason - katalah data 150 megs, takkan nak copy data tersebut kepada satu fungsi. mem alloc untuk data = 150megskalau hantar data ke fungsimem alloc untuk data = 150megsmem alloc untuk hantar data = 150megstotal alloc = 150+150 = 300 megs;itu untuk satu fungsi. kalau 10. kalau 100.isunya ialah jumlah ruang dan masa capaian datakalau hantar alamat ke fungsimem alloc untuk data = 150megsmem alloc untuk hantar alamattotal alloc = 150megs + address = 150 lebih cikit.rasanya Rads78 dah tau pasal mende nih. saja je tuu.optimizationsatu2nya reason wujudnya 3d card adalah kerana untuk menghasilkan image/animasi 3d yang realistik, memerlukan jumlah kuasa pemprosesan yg teramat tinggi. walaupun 3d card boleh dianggap mature, tapi untuk menghasilkan image yg realistik adalah masih terlalu jauh lagi(sangat2 jauh, malah pendekatan animasi movie dengan animasi game adalah amat berbeza. satu untuk realistik(compleks lighting) dan satu lagi untuk real time(60fps). satu ray-tracing dan satu lagi z-buffer).untuk realtime, min desired fps adalah 75fps(normal human eye/brain frekuensi). oleh itu setiap frame perlu siap dilukis dalam masa 1/75=0.01333saat. dalam simulation loop untuk game(sbg contoh), paling basic ada1. ai2. motion3. collision detection4. collision response5. rendering/lighting/shadow6. dllcuba test bagi2kan masa untuk 5 module tersebut. average alloc time = 0.0133/5=0.00266saat untuk satu module. oleh itu optimization memang amat kritical.optimization(dalam konteks real time computer graphics) bergantung kepada hardware dan API. untuk opengl, mark j kilgard ada publish satu artikel berkenaan opengl specifik optimization. untuk hardware plak, sama ada good understanding of the acceleration system atau usha vendor specifik optimization.contoh optimization opengllukis model 3dmethod 1simpan data array 3d objek dalam sistem memory(initialize)fungsi lukis akan panggil(sistem memory) dan simpan data yg dicapai dalam buffer opengl(sistem memory) untuk proses lukisanlukis data bufferulang pada setiap frame(kecuali initialize)method 2(faster) - beza pada initializationsimpan data array 3d objek dalam sistem memory(initialize)fungsi lukis akan panggil(sistem memory) dan simpan data yg dicapai dalam buffer opengl(sistem memory) untuk proses lukisan(initialize)lukis data bufferulang pada setiap frame(kecuali initialize)method 3(fastest) - beza pada simpanan datasimpan data array 3d objek dalam sistem memory(initialize)fungsi lukis akan panggil(sistem memory) dan simpan data yg dicapai dalam buffer opengl(kali ini ruang memory terpantas bagi sesatu 3d card, iaitu AGP memory) untuk proses lukisan(initialize)lukis data buffer(AGP memory)ulang pada setiap frame(kecuali initialize)method 1 adalah cara guna opengl paling basic. method 2 dinamakan kaedah display list, manakala method 3 pula adalah vertex array(vendor specific, bukan yg opengl punya). beza ketiga2 kaedah tersebut adalah dari segi pilihan memory untuk simpanan dan proses initialization.dan banyak lagi. ps. bahasa cam hapa. nak cepat pnyer pasal. Quote Share this post Link to post Share on other sites
Rads78 0 Report post Posted March 15, 2005 Thats a very nice of you. Really appreciate it. Yeah... i'm hoping that your article will benefit other programmers in their daily programming projects.Optimization.. on the normal desktop programming.. mungkin tak banyak dipertekankan except in database and gaming programming i guess (correct me if i'm wrong). Tetapi didalam server environment, where the server must be able to serves / process thousands of records per minute and extra power / space is expensive... optimization is your best friend. Anyway i dun have much experience in the subject yet (thats the reason of the babbling).. but i iwsh other programmers can join in this discussion as well and put up their knowledge to be shared Quote Share this post Link to post Share on other sites
publicENEMY 0 Report post Posted March 16, 2005 Optimization.. on the normal desktop programming.. mungkin tak banyak dipertekankan except in database and gaming programming i guess (correct me if i'm wrong). ←personal opinion publicENEMYlah, semua bidang komputer perlukan optimization apabila applikasinya1. time critical2. lots of processing3. lots of datadalam bidang computer graphics(AFAIK), yang paling gila perlu optimization adalah virtual surgery(dibedah oleh doktor yg berada jauh dari bilik pembedahan). ini kerana processing mesti pantas(takkan nak bedah orang gambarnya tersenggut2), highly physiccly accurate( fast collision detection for extremely detail object, fast physical based collision response), small or extremely fast data transfer. apapun, virtual surgery ini mempertaruhkan nyawa manusia. hakikatnya, virtual surgery walaupun active research setelah sekian lama, tetapi tidak cukup untuk diaplikasikan.hmmm... Quote Share this post Link to post Share on other sites
1kHz 0 Report post Posted March 29, 2005 Salamz.. aku selalu buat kerja dlm .NET (VB.NET dan C#.NET), ada sikit PHP dan pernah juga dlm C++, jadi apa yg nak ditulis ni berdasarkan platform2 ni lah.. dan sekarang ni byk buat dev on enterprise level app, yg main2 dgn database etc..1) Debugging process / method yg selalu digunakanIni bergantung pada IDE yg digunakan, aku guna VS.NET, ada byk debugging tools yg boleh digunakan.. Biasanya aku letak breakpoint, dan guna step utk jejak aturcara, dan watch utk tengok variable.. dan selalu juga guna apa yg dinamakan 'command window' utk test statements.. last resort barulah guna printf, atau dlm .NET ada System.Diagnostics.Debug.WriteLine() yg boleh write ke 'debug window'..Debugging tools ni pd pendapat aku adalah amat penting utk dipelajari, ramai yg tak sedar debugging skills adalah satu aspek yg amat penting dlm programming.. berapa lama masa korang habiskan selalu utk debug? lama kan? jadi gunakan tools yg sesuai utk mudahkan kerja..2) Naming convention bagi method / sub / function / class yang ngkorang selalu gunaIkut .NET punya recommendation.. - Public member var guna Pascal notation. eg: LastModOn, DefaultPage - Private vars letak 'm' didepan. eg: mCount, mSize - Func/Sub sentiasa Pascal notation - Local vars guna Camel notation: eg: retVal, i - Params sent ke func letak 'p'. eg: pWorker - biasanya kalau boolean type aku suka letak "is". eg: isError, IsDefault - Constants pakai all caps. eg: MAX_REQUEST, EXCEED_LIMIT - aku suka pakai nama panjang2 (tapi jgn la pjg sgt). - dulu masa C++ guna juga Hungarian notation, tapi skarang tak lagi..3) Apa yang selalu ngkorang comment didalam atucara ngkorangApa yg aku rasa aku akan lupa nanti, atau sesuatu yg susah nak paham cth kalau ada algo yg rumit2, atau ada perkiraan fizik etc.. oleh sbb aku suka pakai nama func yg panjang jadi ia lebih descriptive..selalunya baca je dah tahu func tu utk apa, tak payah comment pjg2..4) Sekiranya ngkorang ndak pass parameter ke class / sub / method... cara apa yg ngkorang selalu pass?? Reference or value and why and when? Sama mcm publicEnemy lebih kurang5) Sebelum membina program, apa analisis yg dilakukan untuk memastikan atucara itu berjalan dengan lancar?Flow utk software development tu selalunya mula dgn :1- mengumpul user requirement, 2- kemudian analysis, 3- kemudian design, dan seterusnya 4- implimentation (coding).5- apa lagi? testing, maintain2, apa2 lah..IMHO, part 2 dan 3 adalah yg paling penting.. newbies selalunya tak hiraukan bahagian 1,2 dan 3 dan terus jump pada 4. Hati2, korang akan hadapi masalah kalau buat begini dlm projek yg besar2.Aku pun masih tak mahir dlm 1,2 dan 3 tu tapi tengah nak belajar object oriented analysis/design (OOA/D)Dlm situasi programming env aku skarang, aku lebih suka cenderung pada maximise maintainability dan flexibility berbanding performance.. performance ketepikan dulu (lagipun hardware dah murah sekarang, pegi la tambah RAM).. tapi dulu masa buat OpenGL, aku agak particular jugak pasal performance, tapi masa tu takde la terer, sikit2 takat guna display list tu tahu lah..thats my humble opinion la.. tq for reading.. Quote Share this post Link to post Share on other sites
publicENEMY 0 Report post Posted March 30, 2005 nice one 1kHz. Quote Share this post Link to post Share on other sites
Rads78 0 Report post Posted March 30, 2005 Damn... thats a nice one. Tell u wat guys.. I'll print this out and stick it on my wall. Thanks PublicEnemy and 1Khz. That rocks!!! Quote Share this post Link to post Share on other sites
1kHz 0 Report post Posted January 22, 2007 (edited) Kalau nak jadi developer yang bagus, yang bukan setakat tahu tulis code je, tapi tulis code yang maintainable, scalable, robust, less buggy, sila baca buku ini. A must for everybody who wants to be a professional programmer.The Pragmatic Programmer, From Journeyman To Master Edited January 22, 2007 by 1kHz Quote Share this post Link to post Share on other sites
CFoo++ 4 Report post Posted March 8, 2007 (edited) A'kum...Nih aku ndak ajak ngkorang berbincang mengenai high quality programming. Cakap pasal how to program.. semua orang boleh program... tapi apa yang membezakan programmer dengan programmer yang lain adalah macam mana susunan, cara debugging, analysis, naming convention dan sebagainya. Selalunya dekat pusat pengajian tinggi jarang diaorang ajar pasal nih dan biasanya semua ini datangnya daripada pengalaman diri sendiri. So... cuba ceritakan bagaimana ngkorang selalu buat 1) Debugging process / method yg selalu digunakan2) Naming convention bagi method / sub / function / class yang ngkorang selalu guna3) Apa yang selalu ngkorang comment didalam atucara ngkorang4) Sekiranya ngkorang ndak pass parameter ke class / sub / method... cara apa yg ngkorang selalu pass?? Reference or value and why and when? 5) Sebelum membina program, apa analisis yg dilakukan untuk memastikan atucara itu berjalan dengan lancar?Please keep in mind that theres no idea that is a stupid idea (as in we can always elaborate it)... so mintak-mintak para programmer ataupun bakal programmer kat sini dapat berkongsi idea pasal bender alah nih semua.ps: Any recommendation for reading material for topics above?WassalamSatu lagi perkara yang menentukan kualiti aturcara yang dihasilkan ialah rekabentuk antaramuka (interface design). Kalau diperhatikan softwer tempatan walaupun yang komersil nampaknya terlalu lemah pada bahagian ini, sedangkan interface adalah sesuatu yang penting kerana ianya akan dilihat dan dinilai secara langsung oleh pengguna. Interface perisian tempatan selalunya boleh dikatakan sebagai "ikut jadi" atau lebih dengan kata lain ianya tidak dirancang. Ini berbeza dengan softwer dari barat yang mempunyai interface yang seragam dan teratur. Interface yang dirancang dengan baik akan memudahkan pengguna menggunakan perisian yang kita hasilkan disamping memberikan keselesaan. Sebagai programer sepenuh masa di sini saya ada beberapa perkara/nasihat untuk panduan kepada bakal-bakal programer semasa merekabentuk antaramuka.1. Cuba gunakan interface standard samaada MDI (Multi Document Interface - cth Microsoft Word), SDI (Single Document Interface - cth Notepad) atau dialog base (seperti yang selalu digunakan oleh softwer antivirus).2. Gunakan fungsi dockable (toolbar, workspace dan lain-lain yang boleh dipindah datau disembunyikan).3. Cuba gunakan semaksima mungkin ruang skrin yang ada. Jangan gunakan skrin window bersaiz tetap (misalnya 640x480).4. Jangan sekali-kali mematikan fungsi asas windows (misalnya fungsi resize, close, minimize) sebaliknya cuba bertindak mengikut situasi.5. Pastikan susunan butang yang digunakan di atas kotak dialog adalah seragam seperti lain-lain program , cth butang [OK] disebelah kiri butang [Cancel].6. Sediakan pelbagai cara untuk melaksanakan sesuatu arahan misalnya melalui menu, toolbar atau keyboard.7. Jangan gunakan perkataan atau ayat-ayat yang menyalahkan pengguna di dalam mesej apabila terdapat kesilapan, sebaliknya berikan bantuan atau cadangan.Sebenarnya ada banyak lagi, tapi masa tak mengizinkan. Apa pun cuba praktikkan dulu semua yang di atas. Edited March 8, 2007 by CFoo++ Quote Share this post Link to post Share on other sites
evo10 0 Report post Posted March 28, 2007 Tengok buku Steve McConnell (kalau tak silap nama dia) bertajuk "Code Complete".Lepas tu boleh tengok buku "Large Scale C++ Software Development"...author John Lacos..tapi specific utk C++ je lah.Tempat saya kerja ada 80 page coding standard...kalau ada masa I will list some of the rules and recommendations. Quote Share this post Link to post Share on other sites
c0NdeM3 D 3moTi0n 1 Report post Posted July 20, 2007 thanks 4 the info ...bergune beb buku2 kat atas nie ..lagi2 baru2 nak berjinak menjadi profesional programmer ...memang bnyk beza la kalo nak ikot kan programming aku ngan korang ..cam langit ngan bumi ...ye la ...dulu programing ikot suke tanpe prosedur .jadi bile aku review and pk balik mmg penting struktur pembuatan dan penyusunan tu ..pas2 bile aku kaji balik2 keje2 lame ..ces ...sume cam haram ..nampak la jauh beza mindset dulu ngan skang ...hopefully boleh la improved mindset and tukar dari basic programmer ke pro ..hahhaha Quote Share this post Link to post Share on other sites
luvLive 0 Report post Posted May 3, 2008 just adding lil'bit opinion...Help Function...nih penting gak..even system/program yg d buat 2 gempak either from GUI n system flow,tp takde system help susah gak kn..he..n 1 more..navigation,xkire la same ade dari segi link or form popup..kene titik beratkan gak. Quote Share this post Link to post Share on other sites