Tags:

คือว่าเขียนเกมโดยใช้จาวาน่ะค่ะ เราจะดูอย่างไรค่ะว่าเราได้เขียนโดยใช้หลักการแนวคิดเชิงวัตถุแล้ว พอดีมีคนมาดูแล้วบอกว่ายังไม่ได้ใช้เลยอ่ะค่ะ เกมก็ใช้หลักจาวาทั่วไป แบ่งเป็นคลาสต่างๆค่ะ จะตัดสินยังไงว่าใช้OOแล้วค่ะ ขอบคุณค่ะ

Get latest news from Blognone
By: ezy on 11 October 2008 - 22:41 #67773

ตอบยากเนอะ คือ เรารู้สึกว่า class ที่แตกๆ ออกมามันทำอะไรในสิ่งที่ควรทำรึเปล่า? มีใครแย่งงานใครคนอื่นไปทำจนออกนอกหน้าเกินไปรึเปล่า ฯลฯ

ezybzy.info blog

By: namprik on 12 October 2008 - 00:43 #67783 Reply to:67773

เหอๆๆๆ แล้วถ้ามันทำในสิ่งที่ควรทำ แล้วแย่งงานนี่คือเป็นOOแล้วใช่มั้ยค่ะ แต่ไงก็ขอบคุณสำหรับคำตอบค่ะ

By: ezy on 12 October 2008 - 01:23 #67791 Reply to:67783

ถ้าแย่งงานกันทำมันจะทำให้ code reuse ลดลงรึเปล่า?

ผมชอบคำอธิบายของ thread ข้างล่างนะ เห็นภาพดี

ezybzy.info blog

By: tekkasit
ContributorAndroidWindowsIn Love
on 12 October 2008 - 01:20 #67786
tekkasit's picture

ผมอ่านแล้วก็สะดุดนะ ผมเองก็ไม่แน่ใจเหมือนกันว่าโค้ดที่ผมเคยพัฒนามัน OOP รึเปล่า เอาแต่เสร็จให้ทัน กะอ่านให้มันง่ายไว้ก่อน

ตามตำราทางวิชาการแล้ว แนวคิด OOP มีเพื่อวัตถุประสงค์ที่จะให้โค้ด lossy coupling เอาโค้ดกลับมาใช้ใหม่ได้มากไปกว่าที่ Procedural Language ปกติจะให้ได้ โดยจะมีจุดเด่นที่แตกต่างไปคือเรื่อง encapsulation, polymorphism, inheritance, abstraction

สัญญาณที่เห็นได้ว่าจะไม่ใช่ OOP

  • เห็นโค้ดซ้ำๆ (duplicate code) ในโปรเจตต์
  • มีใช้ global variable อย่างเป็นล่ำเป็นสัน
  • โค้ดแทบจะเป็นแฝดสยาม เปลี่ยนโครงสร้างภายในหน่อย โค้ดที่ใช้แทบจะเสียชีวิต ต้องรื้อใหม่ อันนี้ก็ว่า tighly coupling
  • ในคลาส มีเมธอดตัวใหญ่ๆ โค้ดหลายๆสิบหน้า เอาสัก 20-30 บรรทัดก็เริ่มสนุกแล้ว เมธอดเดียวแตะร้อยนี่น่ากล้วนะครับ
  • คลาสเปลีอย ประมาณว่าเป็นที่เก็บตัวแปรเฉยๆ ไม่มี value-added เมธอดใดๆ ใครอยากล้วงควักตัวแปรเมื่อไรก็เชิญ

สัญญาณที่เห็นได้ว่าจะเป็น OOP

  • ใช้ฟีเจอร์ encapsulation, inheritance, polymorphism
  • design patterns

แต่ก็นั่นแหล่ะ OOP เป็นแนวคิดในการพัฒนาโค้ด ไม่ใช่เพียงแต่คุณใช้ feature ของภาษาครบแล้วโค้ดจะเป็น OO ขึ้นมาในบัดดล เพียงแต่ว่าฟีเจอร์ภาษามันเอื้อให้คุณคิดอย่าง Object Oriented

ปล. OOP ก็ไม่ใช่ทุกอย่าง ถ้างานมันเขียนให้เข้าใจ อ่านง่ายรู้เรื่องด้วย procedural style ได้ ก็ไม่ต้องขยันไปทำเป็น OOP อันนั้นเวอร์เกินไป

By: namprik on 12 October 2008 - 15:34 #67829 Reply to:67786

โอ้โห เห็นภาพเลยค่ะ ขอบคุณมากๆๆเลยนะค่ะ สรุปว่าที่ทำมามันก็ไม่ค่อยจะเป็นOO9มที่เค้าว่ากันจิงๆด้วยค่ะ เหอๆๆ

By: lew
FounderJusci's WriterMEconomicsAndroid
on 12 October 2008 - 22:17 #67849 Reply to:67786
lew's picture

+1 Informative

LewCPE


lewcpe.com, @wasonliw

By: tested on 16 October 2008 - 15:25 #68218 Reply to:67786

สัญญาณที่เห็นได้ว่าจะไม่ใช่ OOP
-- รู้สึกตอนเริ่มเขียน ปีสองปีแรก บวกกับงานเร่งๆ นี่จะอยู่ใน สัญญาณนี่หมดเลย

พอได้ศึกษาพวก Design Patterns 28 กระบวนท่าแล้ว ก็ลองใช้ก็พวก Facade เข้ามาช่วยและอื่นให้ชีวิต OO ดีขึ้น
- - แหะๆ

By: lagus
iPhone
on 12 October 2008 - 11:54 #67805
lagus's picture

เห็นด้วยกะคุณ tekkasit นะ

notz-dev :: RIA Develop & Design

By: tekkasit
ContributorAndroidWindowsIn Love
on 12 October 2008 - 21:25 #67847
tekkasit's picture

ที่ผมเขียนถือว่ายกตัวอย่างเท่านั้นนะครับ อย่าได้ถือเป็นไม้บรรทัดเข้าเชียว เพียงแต่เวลา/ประสบการณ์ อ่านโค้ดคนอื่นเยอะๆ ไปแกะโค้ดไลบารีมาอ่าน มันก็จะพอซึมซาบมาได้

แต่ที่ผมเขียนไปนั่นไม่ได้หมายความว่าผมไม่เคยเป็นโค้ดสปาเกตตี้นะ กลับไปเห็นโค้ดตัวเองที่เคยเขียนเมื่อหกปีก่อน มันยังทำงานอยู่ เห็นแล้วก็ยังอดฮาไม่ได้ ไม่รู้ว่าลูกค้าที่เอาโค้ดไปดูแลเองนี่นั่งกลุ้มรึเปล่า ^_^;

By: latesleeper
Android
on 12 October 2008 - 22:21 #67850

อยากให้แนะนำบทความ/ebook สอนคอนเส็ปท์เรื่อง OO ให้หน่อยครับผมเองสนใจมากแต่ก็แก่เกินจะกลับไปลงทะเบียนเรียนแล้ว คงจะต้องหาอ่านเอง ช่วยแนะนำให้หน่อยนะครับ ขอบคุณครับ

By: ปิง
Symbian
on 12 October 2008 - 22:24 #67851

อุ๊

งานผมมี class นึง พันกว่าบรรทัด = ="

By: tekkasit
ContributorAndroidWindowsIn Love
on 12 October 2008 - 22:49 #67854 Reply to:67851
tekkasit's picture

เอาจริงอ่ะ คือในตัวอย่างผมหมายถึง หนึ่งเมธอดสวยๆน่าจะระดับห้าสิบบรรทัด ร้อยนี่สุดๆแล้ว แต่กรณีคลาสละพันนี่ สงสัยจะเจอ อาการคลาสโตถล่มจักรวาลสยองโลก หรือภาษาวิชาการว่า God Object

ถ้าสนใจเรื่องทำนองนี้ ลองศึกษาเรื่องพฤติกรรมที่ไม่ดีที่เรียกว่า Anti-Pattern คือบางทีคนเราจะสอนเรื่องที่นามธรรม ต้องดูตัวอย่างที่ไม่ดี แล้วมันจะนึกประโยชน์ออกว่าแล้วจะทำไปทำไม แทนที่จะคิดเอาว่าได้เท่ห์ๆ

สำหรับ Software Design Pattern ผมขออนุญาตแนะนำ Head First Design Patterns นั่นก็ดีมากนะครับ คนไทยอย่างเราๆจะมีปัญหาว่าอ่านเท็กซ์อะไรที่นามธรรมมากๆ ไม่เข้าใจ อันนี้เป็นภาพเลยครับ อ่านรู้เรื่องมาก ไม่ต้องจินตนาการมาก

By: Kerberos
AndroidRed HatUbuntuWindows
on 12 October 2008 - 23:00 #67855 Reply to:67854
Kerberos's picture

โอ้ว มาเป็นซีรีย์ แนวๆ "for dummies" เลย

ไม่ตายไม่เลิก

By: lew
FounderJusci's WriterMEconomicsAndroid
on 12 October 2008 - 23:42 #67861 Reply to:67854
lew's picture

Blognone Tech Day คราวหน้าอาจจะต้องขอจองตัวนะครับ :D

LewCPE


lewcpe.com, @wasonliw

By: mokin
Contributor
on 13 October 2008 - 21:10 #67929 Reply to:67861
mokin's picture

คุณ tekkasit งานเข้าแล้ว คริๆ
เห็นด้วยครับที่ นำคุณ tekkasit มาสอนความรู้ชาว Blognone ครับ
อธิบายได้ดีเลยที่เดี่ยว

</mOkin™>มีความสุขที่พอดี กับชีวิตที่พอเพียง</mOkin™>

By: latesleeper
Android
on 13 October 2008 - 18:31 #67917 Reply to:67854

อ่านอยู่ครับ ขอบพระคุณมากครับ