Category Software Development

เวลาพัฒนาระบบ บางครั้งทำไมเราถึงต้องกำหนดให้ ID ติดลบ

ในการทำระบบงานต่างๆ ไม่ว่าจะระบบเล็ก หรือเป็นระบบใหญ่ขึ้นมาสักระบบนึง แน่นอนเลยว่าข้อมูลย่อมมีมหาศาลมากมาย แต่เราจำเป็นไหม ? ว่าจะต้องทำหน้าจอขึ้นมา เพื่อจัดการกับข้อมูลเหล่านี้ คำตอบ คือ ไม่ครับ ในข้อมูลส่วนที่ไม่ต้องมีการแก้ไขบ่อยๆ เช่น ข้อมูลจังหวัด ข้อมูลประเทศ หรือ เป็นข้อมูลราคาหุ้นจากตลาด SET หรือ MAI ครับ ปัญหาถัดมา คือ เราทำอย่างไร เพื่อไม่ให้ข้อมูลเหล่านี้มันหายไป ตอน Migrate ระบบ หรือระหว่างการใช้งาน เพื่อไม่ให้ User มือบอนไปกดลบได้ครับ ? ทางเลือกนึงที่ใช้ คือ การกำหนด Flag ขึ้นมา หรือเพิ่มคอลัมน์ในฐานข้อมูลเราแหละครับ แต่ถ้ามองไปอีกที…

ทำไม Method หรือ Function ที่ดีควรมีความยาวไม่เกิน 1 หน้าจอ หรือ 20 บรรทัด หรือ กฏอื่นๆอีกมากมาย

สำหรับบางคนที่เพิ่งเรียนเรียน Programming หรือ เพิ่มเริ่มทำงานใหม่ๆ อาจจะสงสัยว่าทำไมอาจารย์ หรือ พี่ที่ทำงานถึงมีข้อกำหนดในการเขียน Code ขึ้นมา ซึ่งบางข้ออาจจะดูไม่จำเป็นเลย เช่น Method ที่เขียนขึ้นมาควรจะไม่เกิน 20 บรรทัด หรือ แสดงไม่เกินไม่เกิน 1 หน้าจอ การกำหนด Tab เยื้องของ IF ELSE และไม่ควรมี IF ซ้อนกันเกิน 3 ชั้น (ข้อหลังๆนี่ IDE ส่วนใหญ่มันจะ Auto Indent ให้แล้ว ไม่ต้องมาจัดเอง) และกฎอื่นๆอีกมากมาย แต่บางข้อก็ดีอยู่แล้วนะ เช่น แนวทางการ…

[SA] ลองใช้งาน MVP Design Pattern ตอนที่ 1 (เกริ่นนำ)

อ่า Blog นี้ถูกเขียนมาตั้งแต่ปี 2014 ครับ วันนี้ได้เวลาดีมาเขียนให้จบซะที (ปล่อย Blog Public มาได้ 2 ปีและ)  เพราะ ตัว App ที่เป็น Workshop ที่เตรียมไว้ ใช้งานกันแพร่หลายในที่ทำงานแล้วครับ ใช้มา ก็ 2 ปีกว่าและ มาเข้าเรื่องดีกว่า MVP ย่อมาจาก อะไร Most Valuable Player เป็น Boss ใน Game หรือป่าว ? – ไม่ใช่ครับ Minimum Viable…

Cohesion VS Coupling

ในชีวิตการทำงานจริง การพัฒนาออกแบบ Software ระบบหนึ่งขึ้นมา คงไม่ได้มีเพียง File เดียว หรือ Method Main อย่างเดียวแน่ๆ เหมือนตอนที่เรียนอยู่ในมหาวิทยาลัย โดยการทำงานจริงนั้น เราต้องแบบระบบงาน Software ที่ทำอยู่ออกมาเป็น Module หรือ Component ต่างๆ และท้ายที่สุดได้ Class Diagram แต่เมื่อออกแบบเสร็จแล้ว เราจะมั่นใจได้อย่างไรว่า Code ที่เราออกแบบนั้น ไม่มีการทำงานที่ซับซ้อน หรือมีโครงสร้างที่ซับซ้อนมากเกินไป จนทำให้ในอนาคตเมื่อมีการแก้ไข Code นั้นแล้วอาจจะทำให้กระทบไปทั้งระบบ แล้วเราจะมีวิธีจัดการอย่างไงให้สามารถลดความซับซ้อนของระบบได้ ผมขอแนะนำแนวคิด 2C ได้แก่ Cohesion และ Coupling (ลองดูรูป…

FizzBuzz Problem without if (ปัจฉิมบท)

FizzBuzz With Out If Part 2 (AI Generate Image via Bing AI)

จากบทความที่แล้ว แสดงวิธีการเขียน Code กับโจทย์ปัญหา FizzBuzz โดยไม่ใช่ IF กันแล้วนะครับ แต่ผมยังทิ้งท้ายไว้อีกปัญหานึง คือ ถ้ามีเงื่อนไขเพิ่มขึ้นมาหละ โดยให้แสดง WOOF ้เพิ่ม ถ้าตัวเลขนั้นหาร 7 ได้ลงตัว (อ้างอิงจาก WIKI FIZZ BUZZ WOOF ) เราจะมีวิธีการแก้ปัญหาอย่างไรนะครับ โดยผมขอทวนวิธีการที่ใช้แก้ปัญหาใน Blog ตอนที่แล้วก่อนนะครับ

FizzBuzz Problem without if (ปฐมบท)

FizzBuzz With Out If Part 1 (AI Generate Image via Bing AI)

จากบทความที่แล้ว FizzBuzz Problem ไปนะครับ ต่อไปผมลอง Refactor Code อีกรอบ โดยมีเงื่อนไขว่าห้ามใช้ IF ในส่วนของ Logic Fizz และ Buzz ทำไมถึงต้องห้ามใช้ IF เพราะ การใช้ IF ส่งผลให้เกิดความมักง่ายของ Developer ทำให้เกิดปัญหาในการแก้ไข หรือพัฒนา Module เพิ่มเติม ต้องไปแก้ Code จนเกินความจำเป็น และทำให้เกิด Defect(ฺBug) เพิ่มขึ้นด้วย ซึ่งมีแนวคิดทางวิชาการมาสนันสนุนแนวคิดนี้อย่าง The Open Close Principle (OCP) และ High Coupling &…

FizzBuzz Problem

FizzBuzz Intro (AI Generate Image via Bing AI)
FizzBuzz เป็นโจทย์ฝึกสมองเด็ก ที่ใช้ช่วยในการเรียนรู้เรื่องการหาร ซึ่งสามารถไปอ่านกฏเพิ่มเติมได้จากใน WIKI: FIZZBUZZ ครับ แต่บทความนี้ผมขอนำกฏของ FizzBuzz มาประยุกต์กับการเขียนโปรแกรม

The Seven Wastes of Software Development

ช่วงวันหยุดสงกรานต์ ผมได้อ่านบทความท่มีประโยชน์ตามลิงค์  (จริงๆอ่านเจอมานั้นและ แต่ไม่มีเวลาอ่าน 555) โดยเท่าที่ลองอ่านสแกนคร่าวๆมา ผมขอสรุปเนื่อหาสั้นๆนะครับ ก่อนอื่นเลย เราตีความคำว่า waste หมายถึง อะไร ถ้าลองค้นหาในพจนานุกรมดู พบว่ามันแปลว่า ขยะ หรือ สูญเสียไปโดยไร้ประโยชน์ การพัฒนา Software ก็มีขยะพวกนี้เหมือนกัน ซึ่งในบทความนี้จะนำเสนอขยะ หรือ ลงแรงโดยป่าวประโยชน์ ในการพัฒนา Software มีอะไรบ้างนะครับ โดยผมจะเปรียบเทียบกับ 7 waste of Production ที่จะกล่าวถึงขยะของการผลิต(manufacturing) Waste #1 – Partially Done Work(In-process Inventory) คือ ทำงานไม่เสร็จ…