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

สำหรับบางคนที่เพิ่งเรียนเรียน Programming หรือ เพิ่มเริ่มทำงานใหม่ๆ อาจจะสงสัยว่าทำไมอาจารย์ หรือ พี่ที่ทำงานถึงมีข้อกำหนดในการเขียน Code ขึ้นมา ซึ่งบางข้ออาจจะดูไม่จำเป็นเลย เช่น หากเรามองแค่ผิวเผินแล้ว อาจจะคิดในใจว่าต้องการความเป็นระเบียบ ให้ Code สวยงาม เพื่อที่เรา หรือคนอื่นมาเขียนต่อภายหลังได้ง่าย แต่ถ้ามองลึกๆลงไป มันอาจจะเป็นกุศโลบายอย่างหนึ่งก็ได้ ซึ่งแฝงไปด้วยแนวคิด และทฤษฏีที่ซับซ้อน โดยผมจะอธิบาย แต่ละข้อเลยยะครับ ข้อแรก Method ที่เขียนขึ้นมาควรจะไม่เกิน 20 บรรทัด หรือ แสดงไม่เกินไม่เกิน 1 หน้าจอ หากเรามองลึกลงไป ทำไมต้องไม่เกิน 20 บรรทัด หรือ 1 หน้าจอ ซึ่งแนวคิดนี้จะลึกให้เราต้องกำหนดการทำงานของ Method ให้กระชับ และมีหน้าที่เดียว ข้อสอง การกำหนด Tab เยื้องของ IF ELSE และไม่ควรมี IF ซ้อนกันเกิน 3 ชั้น ทีมีการกำหนดให้แสดงการกำหนด Tab เยื้องของ IF ELSE เพิ่มความสวยงามแหละ และแสดงให้เห็นถึงความซับซ้อนของ code มองง่ายๆ เลย ถ้า Code ทีเราเขียนขึ้นมามี IF ซ้อนกันเยอะแล้วเนี่ย แสดงว่า logic ภายใน method นั้นมันซับซ้อนเกินไป ซึ่งจะมีผลกับการ maintain code ในอนาคต ถ้าเกิดมีการเพิ่มเงื่อนไขลงไปอีก แต่เราจะรู้ได้อย่างไรว่ามันจะไม่ไปกระทบกับ IF เดิมๆ ที่มีอยู่ก่อนแล้ว แนวทางแก้ไข ทางแก้ไขมีง่าย แต่มีศัพท์เรียกรวมๆว่าการ Refactor Code แต่เราจะ Refactor อย่างไร มีแนวคิด และแนวคิดที่เข้ามาช่วย ดังนี้

ลงทุนด้วยหลักกาลามสูตร

ตอนแรกหลายๆคนอาจจะงงว่าไอ้หลักกาลามสูตร มันเอาประยุกต์ใช้กับการลงทุนได้ด้วยเหรอ ? ส่วนตัวผมจริงๆหลักการนี้มันปรับใช้กับทุกเรื่องได้ครับ ไม่จำเป็นต้องเป็นหุ้นหรอก แต่ผมอยากจะเตือนเม่ารายใหม่ที่ตามมาเล่นหุ้น เพราะ คิดว่ามันได้เงินเยอะ มันหอมหวาน แต่อีกด้านของมันขาดทุน เจ๊ง (จริงๆผมก็มือใหม่นะ เพิ่งเล่นมาจริงๆ ประมาณ 5 เดือนได้เอง) มาเข้าเรื่องดีกว่า “ลงทุนด้วยหลักกาลามสูตร ” อย่าเพิ่งเชื่อโดยฟังตามกันมา >> ไปเชื่อโพยหุ้น โดนไม่ได้ศึกษาพื้นฐานหุ้นนั้นก่อน อย่าเพิ่งเชื่อโดยถือว่าเป็นของเก่าเล่าสืบๆ กันมา >> ซื้อหุ้น เพราะ เมื่อก่อนหุ้นตัวนี้ มีอายุในตลาดมาอย่างยาวนานนน อย่าเพิ่งเชื่อเพราะข่าวเล่าลือ >> ช่วงนี้เทรน Solar Farm (ปี 2557)หุ้นอะไรเล่นข่าวนี้ราคาขึ้้นหมด แต่อย่าลืมตรวจสอบข่าวด้วย อย่าเพิ่งเชื่อโดยอ้างคัมภีร์หรือตำรา >> อันนี้เจอกับตัวเลย เพิ่งหัดดูกราฟ เห็นมี Pattern ตามนี้เลย ตัวสินใจซื้อปรากฏได้หนาวบนดอยแทน อย่าเพิ่งเชื่อโดยคิดเดาเอาเอง >> มันเหม่งๆนะ แล้วก็ขายหมู หรือ Cutloss ไป หรือซื้อเพราะสัญชาตญาณ อย่าเพิ่งเชื่อโดยคิดคาดคะเนอนุมานเอา >> อันนี้มือใหม่น่าจะเจอราคา เช่น หุ้น GU 3 บาท อีก 2 เดือน ราคาไป 9 บาท เลยตัดสินใจซือ เพราะ คิดว่าอีก 5 เดือนมันจะไป 24 บาท (เคยมีรุ่นน้องมาถามจริงๆนะ 55) อย่าเพิ่งเชื่อโดยตรึกเอาตามอาการที่ปรากฏ >> อันนี้ไม่มีอะไรแนะนำา พยายามตรวจสอบข้อมูลให้มันรอบด้าน อย่าเพิ่งเชื่อเพราะเห็นว่าต้องกับความเห็นของตน อย่าเพิ่งเชื่อว่าผู้พูดควรเชื่อได้ >> ช่วงนี้ Fanpage กลุ่มหุ้น โผล่กันเป็นดอกเห็ด ว่าแต่อันไหนจริง อันไหนหลอกหละ ลองคิดกันนะ อย่าเพิ่งเชื่อว่าผู้พูดนั้นเป็นครูของเรา >> ช่วงนี้มีอบรมสร้าเงินล้านมากมาย แต่ยังไงอย่างหลงเชื่อหน้ามืดตามั่วลงทุนตามที่คนสอนบอกนะครับ ควร Cross Check หาข้อมูลก่อน ท้ายที่สุดแล้ว สิ่งที่สำคัญที่สุด…

ข้อคิดก่อนลงทุน

ข้อคิดก่อนลงทุน การวางแผนการลงทุน คือ การวางแผนเพื่อให้การลงทุนบรรลุเป้าหมายที่ต้องการ บนความเสี่ยงที่รับได้ คำถามก่อนจะลงทุน 1. เป้าหมายของการลงทุน เราต้องถามตนเองว่า เราลงทุนเพื่อวัตถุประสงค์ใด เพราะเป้าหมายที่ต่างกัน จะนำไปสู่รูปแบบการลงทุนที่แตกต่างกัน ในระยะเวลาที่แตกต่างกัน เช่น เราจะลงทุนเน้นผลตอบแทนสูง หรือ เน้นการคงอยู่ของเงินต้น เราจะลงทุนเพื่อเป็นรายได้ประจำยามเกษียณ หรือเป็นการ เก็งกำไรระยะสั้น 2. ระดับความเสี่ยงที่รับได้ เรารับความเสี่ยงได้มากขนาดไหน หากลงทุนผิดพลาดเรายังมีเงินสำรองไว้ใช้ หรือมีแหล่งรายได้ใหม่เข้ามาอย่างสม่ำเสมออยู่อีกหรือไม่ บางคนลงทุนในตลาดหุ้นแล้วนอนไม่หลับ กังวลอยู่ตลอดเวลา ถ้าเป็นอย่างนี้ ก็ต้องปรับรูปแบบการลงทุนให้เข้ากับวิถีชีวิตของเรา 3. ระยะเวลาในการลงทุน แต่ละคนอาจจะมีความจำเป็นต้องใช้เงินในเวลาที่แตกต่างกัน คนหนุ่มสาวที่จะเก็บเงินเพื่อใช้ในวัยเกษียณย่อมมีเวลาลงทุนอย่างเหลือเฟือ สามารถลงทุนผ่านกองทุนรวมเพื่อการเลี้ยงชีพ ( RMF) และกองทุนหุ้นระยะยาว ( LTF ) เพื่อให้ได้สิทธิประโยชน์ทางภาษีด้วย ขณะที่พ่อแม่ที่จะเก็บเงินส่งลูกเรียนต่างประเทศในหนึ่งปีข้างหน้า อาจต้องหลีกเลี่ยงการลงทุนที่มีความเสี่ยง หรือขาดสภาพคล่อง 4. ความรู้ความเข้าใจในสิ่งที่ลงทุน เรามีความรู้ในหลักทรัพย์ที่จะลงทุนขนาดไหน รู้ปัจจัยและแนวโน้มที่จะมีผลกระทบต่อการลงทุนหรือไม่ ถ้าไม่รู้จะหาความรู้ได้ที่ไหน ต้องใช้เวลาในการเรียนรู้มากเพียงใด ถ้าเรายังไม่มั่นใจ ขอแนะนำให้ลงทุนผ่านกองทุนรวมก่อน หรือขอคำชี้แนะจากผู้รู้ที่เราไว้ใจ 5. ผลตอบแทนที่ต้องการ คนส่วนใหญ่มักมองเรื่องนี้เป็นประเด็นแรก แน่นอนว่าทุกคนย่อมอยากได้ผลตอบแทนที่สูงที่สุด แต่สุดท้ายผลตอบแทนก็จะถูกกำหนดโดย ความเสี่ยง , ระยะเวลา และเป้าหมายการลงทุน ดั่งสำนวนที่ว่า high risk , high return อยากได้มากก็ต้องเสี่ยงหน่อย เมื่อเรารู้คำตอบทั้ง 5 ข้อแล้ว เราย่อมสามารถลงทุนได้อย่างมั่นใจและมีความสุขมากขึ้น เครดิต thaifinancialadvisor

สูตรหุ้นราคาเบรค โวลุ่มเบรค บัวพ้นน้ำ ยกไฮยกโลว์ ตั้งลำ ดั้งเดิม คือ อะไร

มีใครเคยตั้งคำถามเหล่านี้มั้ย? สูตรเหล่านี้มีที่มาอย่างไร? 1.หุ้นราคาเบรค200วัน คือ 2.หุ้นโวลุ่มเบรค200วัน คือ 3.สูตรบัวพ้นน้ำ คือ 4.สูตรยกไฮยกโลว์ คือ 5.สูตรตั้งลำ คือ 6.สูตรดั้งเดิม คือ คำถาม 1.หุ้นราคาเบรค200วัน คือ และ 2.หุ้นโวลุ่มเบรค200วัน คือ ? คำตอบคือ…หุ้นเบรค 200 วัน แบ่งเป็น 1.ราคาเบรค 2.โวลุ่มเบรค หุ้นราคาเบรค 200 วัน: หมายถึง หุ้นที่มีราคาขึ้นไปสูงสุดในรอบ 200 วันทำการ (ประมาณ 1 ปี) คนที่ติดหุ้นตัวนี้มานานเป็นปี ถ้าไม่ได้เป็นนักลงทุนแบบ VI หรือไม่ได้คัททิ้งไปก่อนหน้านี้ ก็จะทำการขายแล้ว วันนี้เป็นวันที่ทุกคนกำไรหมด ได้ลงจากดอยกันซะที คนทั่วไปเข้าใจว่า ควรขาย แต่บางคนกลับ อยากซื้อ นี่เป็นความคิดที่ทำให้ คนทั่วไป ต่างจาก เซียนหุ้น หุ้นที่เบรค 200 วันได้ แสดงว่า หุ้นตัวนี้ต้องมีดีอะไรบางอย่าง ไม่งั้นทำไมรายใหญ่จึงยอมกวาดซื้อหุ้นทั้งหมดที่ราคาสูงขนาดนี้ วิธีหาหุ้นราคาเบรค 200 วัน ก็คือ เปรียบเทียบราคาย้อนหลังไป 200 วันทำการ ถ้าพบว่าวันปัจจุบันมีราคาสูงสุด หุ้นตัวนั้นก็คือ หุ้นราคาเบรค 200 วัน หุ้นโวลุ่มเบรค 200 วัน: หมายถึง หุ้นที่มีโวลุ่มสูงสุดในรอบ 200 วันทำการ (ประมาณ 1 ปี) ซึ่งโดยปกติแล้ว หุ้นจะเบรคราคา 200 วัน พร้อมๆ กับเบรคโวลุ่ม 200 วันไปด้วยกัน แต่ก็มีบางกรณีที่เบรคราคาไปก่อนแล้วค่อยเบรคโวลุ่มในวันถัดมา หรือเบรคโวลุ่มไปก่อนแล้วค่อยเบรคราคาในวันถัดมา สำหรับกรณีหลังเราต้องตรวจสอบว่า เกิดจากการซื้อขาย Big lot หรือไม่ ถ้าเป็นการซื้อขายปกติในตลาดก็จะน่าสนใจกว่า โดยอาศัยทฎษฎีเทน้ำลงแก้ว สมมติเราเอาแก้วมา 1 ใบ…

[C#] Struct VS Class

struct- object อยู่บน stack – มี default constructor เสมอ ไม่ว่าจะมี custom constructor หรือไม่สร้างก็ตาม- value type- รู้ life time ของ object (out of scope) -มี Method (ในภาษา C จะไม่มีนะ)class- object อยู่บน manage heap- ถ้ามี custom constructor จะไม่มี default constructor- reference type- ไม่รู้ life time ของ object เพราะ GC จะเป็นตัวจัดการ

[CR] Lawson 108 ราเมงซุปโชยุ

จริงไม่คิดว่าจะเจอร้านนี้ที่ตึกเสริมมิตรนะ พอดีไปทำธุระ แล้วไปกดเงินแล้วเจอร้านนี้ซ่อนอยู่ และพอเห็นป้ายโฆณานี้แหละ หิวเลยย จริงตอนแรกกะจะลองกินทั้ง 5 แบบนะ แต่พนักงานบอกว่าของหมด ก็เลยได้กินแต่ราเมงซุปโชยุแทน T.T (จริงๆน้องเค้างงด้วยว่าเราจู่ๆมากินที่ร้าน 5555 ปกติมีแค่คนสั่งกลับบ้าน) เมื่อสั่งมาแล้ว เรามาดูหน้าตากันนะครับ ออกมาตามรูปเลย มีไข่ต้ม 1 ฟอง หมูแบบฮาจิบัง 3 ชิ้น แล้วก็เส้นที่เหนียวนุ่มมมมม สุดท้าย ค่าเสียหายครับ 39 บาท อร่อยคุ้มเกินราคาคับ อิอิ เดวคราวหน้าตองหาไปกินรสที่เหลือต่อครับ  

[C#] การใช้ LINQ หาข้อมูลใน Multidimensional Array (2D)

C# Logo

สมมติว่ามี Array 2 มิติ ซึ่งมีข้อมูล ดังนี้ จริงมัน ตัวคะแนนสอบเก็บแยกตาม Id / Score อย่างคนที่ 1 จะได้ 90 คะแนนเก่งจัง แล้วผมมีโจทย์ว่าจะหาคนที่คะแนนเกิน 85 เราเขียน Code ได้ดังนี้ หลักๆ จะเป็นการแปลง Multidimensional Array มาเป็น โครงสร้างในรูปแบบ (value, index) แล้วมา Grouping ดู Score ว่าต้องมากกว่า 85 ให้สร้าง object ใหม่ที่มี StudentID / Score ผลลัพธ์ Student ID: 1, Score: 90Student ID: 4, Score: 92Student ID: 5, Score: 88  เอาจริงๆ ทำ DTO แล้วเล่นกับข้อมูลง่ายกว่าเยอะครับ  

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

อ่า Blog นี้ถูกเขียนมาตั้งแต่ปี 2014 ครับ วันนี้ได้เวลาดีมาเขียนให้จบซะที (ปล่อย Blog Public มาได้ 2 ปีและ)  เพราะ ตัว App ที่เป็น Workshop ที่เตรียมไว้ ใช้งานกันแพร่หลายในที่ทำงานแล้วครับ ใช้มา ก็ 2 ปีกว่าและ มาเข้าเรื่องดีกว่า MVP ย่อมาจาก อะไร Most Valuable Player เป็น Boss ใน Game หรือป่าว ? – ไม่ใช่ครับ Minimum Viable Product สนใจ Feature ที่สำคัญ หรือ ป่าว ? – ไม่ใช่ครับ Model View Presenter – อันนี้ถูกแล้วครับ Model View Presenter คือ อะไร Pattern ที่ได้รับการต่อยอดมาจาก Model View Controller ครับ ตัวย่อหละ M – Model ใช้จัดการข้อมูล V – View การแสดงผล P – Presenter จัดการ State และพฤติกรรมของหน้าจอ เป้าหมาย เหมือนกัน ตัว MVC/MVP ครับ เป็นการจัดระเบียบ Code ให้อยู่กันได้อย่างหลวมๆ แต่วธีการที่่ทำนั้นแตกต่างกันครับ MVC vs MVP ต่างกันอย่างไร ? MVP Pattern Controller – สามารถจัดการได้หลาย View ถ้า…

[WordPress] วิธีการแก้ปัญหา WordPress : Briefly unavailable for scheduled maintenance. Check back in a minute.

หลายครั้งที่เราได้ Update Plugin / Theme หรือ Core ของ WordPress แล้วเกิดปัญหาเข้าเว็บไม่ได้ โดยมีข้อความ “Briefly unavailable for scheduled maintenance. Check back in a minute.” สาเหตุ เกิดจากการ Update ของตัว WordPress นั้นมีปัญหา อาจจะเกิดจากอินเตอร์เนต ที่ใช้ในการเชือมต่อช้า (ปกติ Host จะมีเนตขาออกไปต่างประเทศน้อยอยู่แล้วครับ) ทำให้เกิด timeout ขึ้น และตัว WordPress ยังไม่ได้ลบไฟล์ .maintance (ซึ่งในในโพลเดอร์ระดับ root ของ blog) ออกไปครับ บาง Host อาจจะมีการ Override เป็น Error อื่นครับ ต้องลองตรวจสอบเพิ่มครับ เช่น The website is undergoing scheduled maintenance. Sorry for the inconvenience. Come back a bit later, we will be ready soon! การแก้ไข ใช้โปรแกรม Ftp เข้าไปจัดการกับ File ใน Host ของเรา โดยลบไฟล์ .maintenance ออกไปครับ หรือจะใช้ File Manager ของ WebHost เข้าไปลบได้ครับ