- เขียนโปรแกรมครั้งหนึ่ง จงเขียนให้เล็กที่สุดเท่าที่จะเป็นไปได้
- จงโปรแกรมโดยคิดว่าจะมีคนมาเขียนต่อจากเรา เพราะอย่างน้อยที่สุดหลังจากเรามาเปิดดูมันอีก1ปีต่อมาเราจะได้อ่านมันรู้เรื่องอยู่
- clearance (ความชัดเจน) กับ extensibility (การขยายต่อได้)...เราเลือกได้อย่างเดียว ต้องตัดสินใจดีๆ
- อย่าไว้ใจ output จากfunctionอื่น แม้functionนั้นเราเป็นคนเขียนเองก็ตาม เพราะมีโอกาสที่เราจะทดสอบfuncที่เราเขียนขึ้นมาไม่ดีพอ
- ถ้าโปรแกรมเมอร์เขียนเองแล้วยังไม่เข้าใจว่าตัวเองทำอะไรอยู่ ก็อย่าไปขอให้คนอื่นช่วยเลย ขอไปเขาก็ไม่เข้าใจอยู่ดี ทางที่ดีลองพักสักครู่หนึ่ง กลับไปทำความเข้าใจมัน ถ้ายังไม่ได้อีก...ก็ตั้งสติแล้วเริ่มเขียนใหม่ดีกว่า อย่าเสียเวลากับอะไรที่แก้ไขไม่ได้แล้วเลย
- หาข้อมูลสามวันก่อนลงมือทำหนึ่งวัน หรือจะลงมือทำเลยแล้วแก้บั๊กสามวันก็เลือกเอา ข้อมูลในที่นี้รวมไปถึงการขั้นตอนการออกแบบตัวโปรแกรม flowchart data structure ที่จะใช้อะไรพวกนั้นทั้งหมดเลยนะ
- เตรียม tools framework program-environment ก่อนลงมือทำงาน ไม่เช่นนั้นคุณจะหงุดหงิดเวลาจะทำอะไรแล้วไม่ได้อย่างใจเมื่อเคย
- อย่าโทษหรือโยนความผิดให้functionหรือclassอื่นก่อน โดยเฉพาะเมื่อพวกมันมาจาก OS และ compiler
- พยายามทำตามกฎอย่างเคร่งครัด แต่ถ้าทำไม่ได้ก็เลี่ยงให้น้อยที่สุดพร้อมกับประกาศไว้ให้เด่นที่สุด
- High cohesion, Loose coupling ตามหลักของSoftware Engineering-โมดูลและฟังก์ชั่นต้องยึดเกาะให้แน่นที่สุดในตัวของมันเอง และผูกกับโมดูลอื่นให้น้อยที่สุด
- เก็บ หรือวางสิ่งที่คล้ายๆ หรือเหมือนกันไว้ให้ใกล้กันที่สุด แม้ในแง่ของการเขียนโปรแกรมที่ลำดับไม่สำคัญต่อการรันผลก็ตาม เพราะคนเขียนนั่นแหละที่จะงงเมื่อเขียนไปเป็นพันๆ บรรทัดแล้ว ไม่ใช่คอมหรอกที่จะงง
- พิสูจน์ก่อน...แล้วค่อยเชื่อ
- กระจายความรู้ออกไปให้มากที่สุดเพราะนั่นคือการทำ Unit Test ระดับล่างที่สุด
- อย่าเอาทุกอย่างใส่ลงไปในUI เพราะUIคือส่วนที่ทำ Unit Test ได้ยากมาก
- โปรเจคทั้งโปรเจคควรไปในทางเดียวกัน (ต้องมีConsistency)
- ถ้ามีสิ่งดีๆ ให้ใช้อยู่แล้วก็จงใช้มัน แต่ถ้าจำเป็นต้องเขียนเอง...ก่อนจะเขียนก็ควรศึกษาความผิดพลาดในอดีตของคนอื่นก่อน
- อย่ามั่นใจว่า code ชุดนี้ใช้ได้ดีจนกว่าจะTestเพียงพอ (ขนาดTestพอแล้วยังเจอบั๊กได้เลย)
- มีการ edit version ของโปรแกรม ให้รันUnit Testใหม่ทุกครั้ง
- แต่ก็อย่าเชื่อ Unit Test ให้มากนัก บางครั้งมันก็ผิดได้
- ถ้าคุณเขียน code อะไรซ้ำกันมากกว่า1ครั้ง มันก็เพียงพอแล้วล่ะที่จะหาวิธีลดรูปหรือแยกชุด code นั้นออกมาเขียนเป็น function
- อย่าเขียนโปรแกรมไปโดยคิดว่าจะoptimizeมันไปด้วย เขียนให้มันใช้งานได้ก่อนแล้วค่อยลงมือทำ แล้วถ้าไม่จำเป็นก็อย่าไปoptimizeมันเลย
- ประสิทธิภาพของโปรแกรม แปรผกผันกับความเข้าใจง่าย...ถ้าโปรแกรมทำงานได้ดีมากเชื่อเถอะว่า code จะเริ่มอ่านยากแล้ว
- เวลาเขียน จงใช้ pattern ที่ชาวบ้านเขาใช้กัน เวลาเอาไปคุยกับคนอื่นจะได้คุยรู้เรื่อง
- MutiThreading เป็นการเพิ่มประสิทธิภาพ แต่มันจะมาพร้อมกับ Concerency, Deadlock, IsolationLevel, Hard to debug, Undeterministic Errors.และอื่นๆ อีกมากมาย
- อย่าไปเพิ่มtechnologyโดยไม่จำเป็นให้โปรแกรมเรา เพราะคนเป็นโปรแกรมเมอร์จะวุ่นวายมากขึ้น
- โปรเจคทำอะไรอยู่คิดซะว่าอาจจะมีความเปลี่ยนแปลงได้ตลอดเวลา (เช่น requiementเปลี่ยน)
- อย่าย่อชื่อตัวแปรโดยไม่จำเป็น มันจะทำให้คุณงงในตัวเอง ตอนนี้โปรแกรมIDEมันฉลายขึ้นเยอะแล้ว แค่พิมพ์ตัวแรกมันก็ขึ้นhintมาให้เลือกแล้ว
- ถ้าโปรเจคใหญ่มากอย่าใช้ i, j, x, y, result, name, param เป็นชื่อตัวแปรยกเว้นคุณจะมีหลักการเขียนที่ตัวเองจำมันได้แน่นอนว่า พวกมันเก็บค่าอะไร
- แบ่งแยกดีดี ระหว่าง Exception message ในแต่ละเลเยอร์ ว่าต้องการบอกผู้ใช้ หรือ บอกโปรแกรมเมอร์
- ที่ระดับ UI ต้องมี catch all exception เสมอเพื่อกรอง Exception ที่ลืมดักจับ
- เวลาทำงานกับdatabase ระวังcolumnที่เป็นnullให้ดี เรื่องนี้ทำโปรแกรมเมอร์เจ็บมากหลายต่อหลายคนแล้วเพราะค่าnullมันconvertไม่ได้
- อย่าลืมว่า Database เป็น global variable ประเภทหนึ่ง แต่ละโปรแกรมที่ติดต่อเปรียบเหมือน MultiThreading ดังนั้นกฏของ Multithreading ต้องกระทำเมื่อทำงานกับ Database
- ระวังอย่าให้ ฟอร์มของif then else ที่ซ้อนกันมากมาก...สมองคนไม่ใช่ CPU จินตนาการไม่ออกหรอกว่ามันอยู่ตรงไหนเวลา Debug ถ้าเจอมันซ้อนกันสัก4-5ชั้นก็restructureใหม่เถอะ
- ด้วยเหตุผลเดียวกัน...อย่าทำnested loopให้มากนัก ไม่ใช่แค่เครื่องจะหน่วงอย่างเดียว ถ้าเจอบั๊กขึ้นมาเราก็คิดตามมันไม่ทันเหมือนกัน
- อย่าเขียนcodeแบบใช้magic number (คืออยู่ๆ ก็มีตัวเลขนี้โผล่ขึ้นมา เช่น if(type==18) คนอ่านอ่านมันไม่รู้เรื่องหรอก ดีไม่ดีคนเขียนจะมึนเองด้วยซ้ำ...เปลี่ยนไปใช้Enumแทนดีกว่า แบบif(type==Connection.OPEN) อย่ารู้เรื่องกว่ากันเยอะ
- ถ้าจะเปรียบเทียบstring ให้trim เจ้าwhite spaceออกไปก่อนจะปลอดภัยกว่า
- คิดให้ละเอียดก่อนเขียนTrigger แล้วเขียนเสร็จแล้วอย่างลืมว่ายังมีมันอยู่ ไม่งั้นเป็นเรื่องแน่
- เมื่อโปรแกรมเมอร์มาอยู่รวมกันเยอะ แน่นอนมันจะเกิดสิ่งที่เรียกว่ามลพิษทางความซับซ้อน ทางแก้คิดหาproject managerเก่งๆ สักคนมาคุมอีกที
- คนฉลาดกว่าคอม เพราะฉะนั้นอย่างให้มันคุมเราได้ เราต้องเป็นคนคุมมัน
- รับฟังผู้อื่นเสมอ แต่อย่าเสียความเป็นตัวของตัวเอง (หมายถึงเวลาโปรแกรมด้วยนะ)
อันนี้แถมท้ายให้...
ปุ่มsaveกดไว้เสมอ
ไม่ได้เสียตังค์ ไม่กดบ่อยๆ ไฟดับ แบตหมด เจอerror เกิดblue
screenแล้วจะไม่มีใครช่วยได้นะ
[อันนี้เป็นข้อคิดที่เราหาๆ มา มาจากที่ไหนบ้างก็ไม่รู้นานมากแล้วเอามารวมๆ
กัน บางข้อก็เขียนเองด้วยแหละ แต่ถ้าพูดถึงว่าคนเขียนเองทำได้หมดทุกข้อมั้ย
ขอตอบเลยว่าไม่ ข้อคิดแต่ละข้อจะดีเมื่ออยู่ในสถานการณ์ของมัน
ต้องเลือกใช้ให้ถูกทางนะครับ ^ __ ^]
*
อ่านละชอบจัง มีประโยชน์มากเลย เจ้าของบล๊อคจบปริญญายังหว่า ชอบๆ
ตอบลบ