SlideShare a Scribd company logo
1 of 29
Download to read offline
มาเขียนโค้ดแย่ๆ กันเถอะ
@somkiat
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
ทำไมต้อง JAVA
http://spectrum.ieee.org/computing/software/top-10-programming-languages
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
คำเตือน
เรื่องต่างๆ ที่จะพูดต่อไปนี้
เป็นเรื่องตลกทั้ง๤ิ้น
ไม่ใ๡่แนวปฎิบัติที่ดีเลย
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
คุณคือ
Maintenance Programmer
Maintenance Programming
ทําการเขียน
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
เชื่อเถอะว่า
มันก็ยากต่อการทําความเข้าใจเ๡่นกัน
ถ้าโค้ดมันเขียนยาก
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
แต่สิ่งที่มักพบเจอ
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
มาเขียนโค้ดกัน
http://hdwallpapers-download.com/best-girl-generation-image-06.html
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
ชื่อนั้นสำคัญไฉน
"นามนั้น๤ําคัญไฉน
กุหลาบถึงเรียกขานด้วย๡ื่อใด
ก็ยังคงความหอมเ๡่นเดิม"
William Shakespeare
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
A B C D E F G
A Boy Can Do Every Thing For Girl
http://www.urbandictionary.com/define.php?term=LMNOP&defid=7311415
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
ชื่อที่ไม่สื่อความหมาย
flag
count
process
handle
run data
input
output
perform
doIt
routine
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
ใช้ชื่อย่อ
Str = String
Usr = User
Frm = Frame/Form
Eff = Efficiency
Txt = Text
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
ไม่สนใจ Coding Convention
i_love_you
NUMBER_Format
Idontcareanything
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
ชื่อกับสิ่งที่ทำไม่ตรงกัน
isValid()
writeFile()
process()
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
ตั้งชื่อแบบ Hungarian
lAccountNumber
arrNumber
fnFunction
MonAM
FriPM
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
ซ่อนการทำงานเยอะๆ
Comment โค้ดทิ้งไว้ ไม่ยอมลบ
ตั้ง๡ื่อคล้ายๆ กัน เ๡่น method1(), method2()
สร้าง overload method จํานวนมาก
ใ๡้ AOP เยอะๆ
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
การเขียน Comment
Comment ไม่ตรงกับการทํางานโค้ด
Comment อธิบายขั้นตอนการทํางานอย่างละเอียด
อัตรา๤่วนของ comment มากกว่า code
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
การออกแบบ
ใ๡้ type case
ไม่ต้องทําการ validate ข้อมูล
ไม่มีการ encapsulate ข้อมูล และการทํางาน
Copy-and-paste
ใ๡้ตัวแปรชนิด Global และ Static
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
เขียนโค้ดให้ดูวุ่นวาย
ใ๡้ magic number เยอะๆ เ๡่น if( status == 1 )
ใ๡้ if-else, switch-case เยอะๆ
ไม่ต้องใ๡้ {} ๤ําหรับ block code ที่มีบรรทัดเดียว
ทําการ Override กันหลายๆ ๡ั้น ดูมีภูมิ
ไม่ชอบ throw exception
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
การทดสอบโค้ดที่เขียน
ไม่ต้องทดสอบ
ไม่เขียน test case
การทดสอบมัน๤ําหรับคนขี้ขลาด
ใ๡้ Debug
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
http://multiple-sclerosis-research.blogspot.com/2013/09/bad-posts.html
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
http://www.nspyre.ro/files//clean-code-1-728.jpg
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
http://xprogramming.com/articles/too-much-of-a-good-thing/
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
http://xprogramming.com/articles/too-much-of-a-good-thing/
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
โค้ดที่ดีเป็นอย่างไร
ตรงตามความต้องการของลูกค้า
๤ิ่งที่ออกแบบ ต้องอยู่ในโค้ด
ไม่มีโค้ดที่๢้ํา๢้อน
แต่ละ๤่วนต้องมีขนาดเล็ก
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
อ่านซะ
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
http://www.gfi.com/blog/the-41-dumbest-security-decisions/
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
T E S T F R A M E W O R K
http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance
http://cheqbook.com/wp-content/uploads/2014/03/simple-accounting-software.jpg
SPRINT3R
Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance

More Related Content

Viewers also liked

Электронные документы в арбитражной практике
Электронные документы в арбитражной практикеЭлектронные документы в арбитражной практике
Электронные документы в арбитражной практикеNatasha Khramtsovsky
 
Conventional Arms Transfers to Developing Nations 2003-2010
Conventional Arms Transfers to Developing Nations 2003-2010Conventional Arms Transfers to Developing Nations 2003-2010
Conventional Arms Transfers to Developing Nations 2003-2010teknoport
 
Protecting Sensitive Data using Encryption and Key Management
Protecting Sensitive Data using Encryption and Key ManagementProtecting Sensitive Data using Encryption and Key Management
Protecting Sensitive Data using Encryption and Key ManagementStuart Marsh
 
Global Competitiveness Report 2012-2013
Global Competitiveness Report 2012-2013Global Competitiveness Report 2012-2013
Global Competitiveness Report 2012-2013teknoport
 
Совершенствование документооборота в Министерстве транспорта Московской области
Совершенствование документооборота в Министерстве транспорта Московской областиСовершенствование документооборота в Министерстве транспорта Московской области
Совершенствование документооборота в Министерстве транспорта Московской областиNatasha Khramtsovsky
 
Зарубежный опыт создания государственных электронных архивов
Зарубежный опыт создания государственных электронных архивовЗарубежный опыт создания государственных электронных архивов
Зарубежный опыт создания государственных электронных архивовNatasha Khramtsovsky
 
UCSF Talk -- How to Think, How to Be
UCSF Talk -- How to Think, How to BeUCSF Talk -- How to Think, How to Be
UCSF Talk -- How to Think, How to BeMarcus Banks
 
Установление сроков хранения документов: государственный и корпоративный подходы
Установление сроков хранения документов: государственный и корпоративный подходыУстановление сроков хранения документов: государственный и корпоративный подходы
Установление сроков хранения документов: государственный и корпоративный подходыNatasha Khramtsovsky
 
0706劍湖山門號課程
0706劍湖山門號課程0706劍湖山門號課程
0706劍湖山門號課程cokahuang
 
Стандартизация в сфере управления документами и информацией: что нового в Ро...
Стандартизация в сфере управления документами и информацией:  что нового в Ро...Стандартизация в сфере управления документами и информацией:  что нового в Ро...
Стандартизация в сфере управления документами и информацией: что нового в Ро...Natasha Khramtsovsky
 
Growfunding als hefboom voor sociaal-culturele praktijken in de stad - Freder...
Growfunding als hefboom voor sociaal-culturele praktijken in de stad - Freder...Growfunding als hefboom voor sociaal-culturele praktijken in de stad - Freder...
Growfunding als hefboom voor sociaal-culturele praktijken in de stad - Freder...Socius - steunpunt sociaal-cultureel werk
 
Location Application Protocol Trap Jack Brown
Location Application Protocol Trap Jack BrownLocation Application Protocol Trap Jack Brown
Location Application Protocol Trap Jack BrownJack Brown
 
AllOver Media Indoor Billboards
AllOver Media Indoor BillboardsAllOver Media Indoor Billboards
AllOver Media Indoor Billboardssdeane
 

Viewers also liked (20)

Электронные документы в арбитражной практике
Электронные документы в арбитражной практикеЭлектронные документы в арбитражной практике
Электронные документы в арбитражной практике
 
Introduction Apache solr 4.4
Introduction Apache solr 4.4Introduction Apache solr 4.4
Introduction Apache solr 4.4
 
Petra Gone Google
Petra Gone GooglePetra Gone Google
Petra Gone Google
 
Conventional Arms Transfers to Developing Nations 2003-2010
Conventional Arms Transfers to Developing Nations 2003-2010Conventional Arms Transfers to Developing Nations 2003-2010
Conventional Arms Transfers to Developing Nations 2003-2010
 
Protecting Sensitive Data using Encryption and Key Management
Protecting Sensitive Data using Encryption and Key ManagementProtecting Sensitive Data using Encryption and Key Management
Protecting Sensitive Data using Encryption and Key Management
 
Global Competitiveness Report 2012-2013
Global Competitiveness Report 2012-2013Global Competitiveness Report 2012-2013
Global Competitiveness Report 2012-2013
 
Совершенствование документооборота в Министерстве транспорта Московской области
Совершенствование документооборота в Министерстве транспорта Московской областиСовершенствование документооборота в Министерстве транспорта Московской области
Совершенствование документооборота в Министерстве транспорта Московской области
 
Level2 handelingstendensen (bijdrage 2)
Level2 handelingstendensen (bijdrage 2)Level2 handelingstendensen (bijdrage 2)
Level2 handelingstendensen (bijdrage 2)
 
Зарубежный опыт создания государственных электронных архивов
Зарубежный опыт создания государственных электронных архивовЗарубежный опыт создания государственных электронных архивов
Зарубежный опыт создания государственных электронных архивов
 
UCSF Talk -- How to Think, How to Be
UCSF Talk -- How to Think, How to BeUCSF Talk -- How to Think, How to Be
UCSF Talk -- How to Think, How to Be
 
Inheritance
InheritanceInheritance
Inheritance
 
Установление сроков хранения документов: государственный и корпоративный подходы
Установление сроков хранения документов: государственный и корпоративный подходыУстановление сроков хранения документов: государственный и корпоративный подходы
Установление сроков хранения документов: государственный и корпоративный подходы
 
Lordi Lana
Lordi LanaLordi Lana
Lordi Lana
 
0706劍湖山門號課程
0706劍湖山門號課程0706劍湖山門號課程
0706劍湖山門號課程
 
Стандартизация в сфере управления документами и информацией: что нового в Ро...
Стандартизация в сфере управления документами и информацией:  что нового в Ро...Стандартизация в сфере управления документами и информацией:  что нового в Ро...
Стандартизация в сфере управления документами и информацией: что нового в Ро...
 
Presentatie e-portemonnee
Presentatie e-portemonneePresentatie e-portemonnee
Presentatie e-portemonnee
 
Whereiscarbonalan
WhereiscarbonalanWhereiscarbonalan
Whereiscarbonalan
 
Growfunding als hefboom voor sociaal-culturele praktijken in de stad - Freder...
Growfunding als hefboom voor sociaal-culturele praktijken in de stad - Freder...Growfunding als hefboom voor sociaal-culturele praktijken in de stad - Freder...
Growfunding als hefboom voor sociaal-culturele praktijken in de stad - Freder...
 
Location Application Protocol Trap Jack Brown
Location Application Protocol Trap Jack BrownLocation Application Protocol Trap Jack Brown
Location Application Protocol Trap Jack Brown
 
AllOver Media Indoor Billboards
AllOver Media Indoor BillboardsAllOver Media Indoor Billboards
AllOver Media Indoor Billboards
 

More from Somkiat Puisungnoen (20)

Next of Java 2022
Next of Java 2022Next of Java 2022
Next of Java 2022
 
Sck spring-reactive
Sck spring-reactiveSck spring-reactive
Sck spring-reactive
 
Part 2 :: Spring Boot testing
Part 2 :: Spring Boot testingPart 2 :: Spring Boot testing
Part 2 :: Spring Boot testing
 
vTalk#1 Microservices with Spring Boot
vTalk#1 Microservices with Spring BootvTalk#1 Microservices with Spring Boot
vTalk#1 Microservices with Spring Boot
 
Lesson learned from React native and Flutter
Lesson learned from React native and FlutterLesson learned from React native and Flutter
Lesson learned from React native and Flutter
 
devops
devops devops
devops
 
Angular :: basic tuning performance
Angular :: basic tuning performanceAngular :: basic tuning performance
Angular :: basic tuning performance
 
Shared code between projects
Shared code between projectsShared code between projects
Shared code between projects
 
Distributed Tracing
Distributed Tracing Distributed Tracing
Distributed Tracing
 
Manage data of service
Manage data of serviceManage data of service
Manage data of service
 
RobotFramework Meetup at Thailand #2
RobotFramework Meetup at Thailand #2RobotFramework Meetup at Thailand #2
RobotFramework Meetup at Thailand #2
 
Visual testing
Visual testingVisual testing
Visual testing
 
Cloud Native App
Cloud Native AppCloud Native App
Cloud Native App
 
Wordpress for Newbie
Wordpress for NewbieWordpress for Newbie
Wordpress for Newbie
 
Sck Agile in Real World
Sck Agile in Real WorldSck Agile in Real World
Sck Agile in Real World
 
Clean you code
Clean you codeClean you code
Clean you code
 
SCK Firestore at CNX
SCK Firestore at CNXSCK Firestore at CNX
SCK Firestore at CNX
 
Unhappiness Developer
Unhappiness DeveloperUnhappiness Developer
Unhappiness Developer
 
The Beauty of BAD code
The Beauty of  BAD codeThe Beauty of  BAD code
The Beauty of BAD code
 
React in the right way
React in the right wayReact in the right way
React in the right way
 

มาเขียนโค้ดแย่ๆ กันเถอะ

  • 2. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance ทำไมต้อง JAVA http://spectrum.ieee.org/computing/software/top-10-programming-languages
  • 3. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance คำเตือน เรื่องต่างๆ ที่จะพูดต่อไปนี้ เป็นเรื่องตลกทั้ง๤ิ้น ไม่ใ๡่แนวปฎิบัติที่ดีเลย
  • 4. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance คุณคือ Maintenance Programmer Maintenance Programming ทําการเขียน
  • 5. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance เชื่อเถอะว่า มันก็ยากต่อการทําความเข้าใจเ๡่นกัน ถ้าโค้ดมันเขียนยาก
  • 6. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance แต่สิ่งที่มักพบเจอ
  • 7. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance มาเขียนโค้ดกัน http://hdwallpapers-download.com/best-girl-generation-image-06.html
  • 8. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance ชื่อนั้นสำคัญไฉน "นามนั้น๤ําคัญไฉน กุหลาบถึงเรียกขานด้วย๡ื่อใด ก็ยังคงความหอมเ๡่นเดิม" William Shakespeare
  • 9. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance A B C D E F G A Boy Can Do Every Thing For Girl http://www.urbandictionary.com/define.php?term=LMNOP&defid=7311415
  • 10. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance ชื่อที่ไม่สื่อความหมาย flag count process handle run data input output perform doIt routine
  • 11. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance ใช้ชื่อย่อ Str = String Usr = User Frm = Frame/Form Eff = Efficiency Txt = Text
  • 12. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance ไม่สนใจ Coding Convention i_love_you NUMBER_Format Idontcareanything
  • 13. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance ชื่อกับสิ่งที่ทำไม่ตรงกัน isValid() writeFile() process()
  • 14. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance ตั้งชื่อแบบ Hungarian lAccountNumber arrNumber fnFunction MonAM FriPM
  • 15. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance ซ่อนการทำงานเยอะๆ Comment โค้ดทิ้งไว้ ไม่ยอมลบ ตั้ง๡ื่อคล้ายๆ กัน เ๡่น method1(), method2() สร้าง overload method จํานวนมาก ใ๡้ AOP เยอะๆ
  • 16. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance การเขียน Comment Comment ไม่ตรงกับการทํางานโค้ด Comment อธิบายขั้นตอนการทํางานอย่างละเอียด อัตรา๤่วนของ comment มากกว่า code
  • 17. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance การออกแบบ ใ๡้ type case ไม่ต้องทําการ validate ข้อมูล ไม่มีการ encapsulate ข้อมูล และการทํางาน Copy-and-paste ใ๡้ตัวแปรชนิด Global และ Static
  • 18. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance เขียนโค้ดให้ดูวุ่นวาย ใ๡้ magic number เยอะๆ เ๡่น if( status == 1 ) ใ๡้ if-else, switch-case เยอะๆ ไม่ต้องใ๡้ {} ๤ําหรับ block code ที่มีบรรทัดเดียว ทําการ Override กันหลายๆ ๡ั้น ดูมีภูมิ ไม่ชอบ throw exception
  • 19. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance การทดสอบโค้ดที่เขียน ไม่ต้องทดสอบ ไม่เขียน test case การทดสอบมัน๤ําหรับคนขี้ขลาด ใ๡้ Debug
  • 20. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance http://multiple-sclerosis-research.blogspot.com/2013/09/bad-posts.html
  • 21. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance http://www.nspyre.ro/files//clean-code-1-728.jpg
  • 22. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance http://xprogramming.com/articles/too-much-of-a-good-thing/
  • 23. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance http://xprogramming.com/articles/too-much-of-a-good-thing/
  • 24. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance โค้ดที่ดีเป็นอย่างไร ตรงตามความต้องการของลูกค้า ๤ิ่งที่ออกแบบ ต้องอยู่ในโค้ด ไม่มีโค้ดที่๢้ํา๢้อน แต่ละ๤่วนต้องมีขนาดเล็ก
  • 25. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance อ่านซะ
  • 26. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance http://www.gfi.com/blog/the-41-dumbest-security-decisions/
  • 27. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance T E S T F R A M E W O R K http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
  • 28. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance http://cheqbook.com/wp-content/uploads/2014/03/simple-accounting-software.jpg
  • 29. SPRINT3R Siam Chamnankit Co., Ltd., Odd-e (Thailand) Co., Ltd. and Alliance