【1/5 12:30 大會報告,本梯次已額滿,填寫表單可優先排入等待清單中,依序遞補,也會優先收到下一梯開課通知,以便手刀搶早鳥票】
凌晨一點了,是該來開放報名 2021 年六月份梯次的【#針對遺留代碼加入單元測試的藝術】
活動介紹:https://tdd.best/courses/unit-testing-gracefully-with-legacy-code-202106/
手刀報名:https://forms.gle/C8DjSkk33D8UMjai9
目前上課範例支援語言:
Java, C#, PHP, JavaScript, Python, Ruby, Kotlin
不用擔心基礎不夠或是實體課程回去無法複習,上課對程式碼的每一個修改,都有對應的 commit history,而且也都有對應的操作影片,讓大家回去可以從頭再練習一次。
課前、課中、課後也有討論群組供發問、分享。
恩,錯過這梯次就又要等半年以上囉,人生沒那麼多個半年可以耗,單元測試在各個 software engineer JD 上幾乎都一定會被列上去,不要只是會寫加法器或書裡面的範例而已,不要只是會用 IDE, test framework 跟 mock framework 而已,你要面對的是 legacy code,怎麼解決雞生蛋、蛋生雞的問題,才是真正務實的單元測試。
#業界第一品牌
#我就是不要臉
「kotlin test」的推薦目錄:
- 關於kotlin test 在 91 敏捷開發之路 Facebook 的最讚貼文
- 關於kotlin test 在 เกมถูกบอกด้วย v.2 Facebook 的最讚貼文
- 關於kotlin test 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
- 關於kotlin test 在 kotest.io - GitHub 的評價
- 關於kotlin test 在 kotlinx-coroutines-test 的評價
- 關於kotlin test 在 kotlin-test vs kotlin-test-junit - Stack Overflow 的評價
kotlin test 在 เกมถูกบอกด้วย v.2 Facebook 的最讚貼文
https://www.humblebundle.com/…/ios-android-mobile-developme…
แพ็คใหม่จาก Humble นะครัช ครั้งนี้คือ HUMBLE BOOK BUNDLE: IOS & ANDROID MOBILE DEVELOPMENT BY PACKT รายละเอียดมีดังนี้
.
จ่าย $1 รับ
- Android Programming for Beginners
- iOS 13 Programming for Beginners
- Flutter for Beginners
- Android Programming with Kotlin for Beginners
- Learn Swift by Building Applications
- The Complete iOS 11 and Swift Developer Course - Build 20 Apps - Video
.
จ่าย $8 รับเพิ่ม
- Hands-On Server-Side Web Development with Swift
- Android 9 Development Cookbook
- The 7 Day Android App Bootcamp - Android Pie and Kotlin - Video
- Hands-On Android UI Development
- SwiftUI - Build Beautiful, Robust, Apps - Video
- Hands-On Full-Stack Development with Swift
- Ionic Cookbook
- React Native Cookbook
- React Native Blueprints
- Xamarin.Forms Projects
.
จ่าย $15 รับเพิ่ม
- Mastering Xamarin UI Development
- Swift Protocol-Oriented Programming
- Test-Driven iOS Development with Swift 4
- Swift Weather (Meteorology) Application with REST API - Video
- Mastering Swift 5
.
รายละเอียดเพิ่มเติมดูที่หน้าร้านค้า
https://www.humblebundle.com/…/ios-android-mobile-developme…
.
อนึ่ง eBook และวิดีโอ
.
อสอง ดีลนี้หมดเวลาในอีก 20 วันกว่าๆ
.
อสาม ก็ตามชื่อแพ็คคือรวมหนังสือและวิดีโอสอนการเขียนแอปบนมือถือ
.
หนังสือดีราคาถูกแบบนี้
ไม่สอยได้ไงพี่น้องงงงง
https://www.humblebundle.com/…/ios-android-mobile-developme…
-------------------------------
BullVPN ปกปิด ซ่อน IP มุดเว็บไซต์ ดูหนัง มุดเกม ต้องเราเท่านั้น
VPN สำหรับทุกคนต้องมีติดตั้งไว้เสมอ!!!
สมัครรับวันทดสอบฟรี www.bullvpn.com/?a=sheapgamer
-------------------------------
Call of Duty: Black Ops Cold War สั่งจองล่วงหน้าลด 10% เหลือ $53.99 ประมาณ 1690 บาท (BattleNet) ดูที่นี่ - https://bit.ly/31uAauU
kotlin test 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
Functional programming ชื่อไทยคือ “การโปรแกรมเชิงฟังก์ชั่น” ชื่อย่อ FP เป็นแนวคิดหนึ่งของการเขียนโปรแกรม (programming paradigm) ชื่อขึ้นต้นด้วย functional แต่ไม่ได้มีดีแค่ประกาศ function ปุ๊บเสร็จ แล้วเรียกใช้ มันมีเบื้องลึกมากกว่านั้นแน่ๆ
🤔 มันจะต่างจากการเขียนโปรแกรมทีละสเตป ตามลำดับก่อนหลัง มีการวนลูป ที่เน้นแก้ state ของโปรแกรมเป็นหลัก
แต่แนวทาง functional programming จะไม่แก้ state ของโปรแกรมเลย ไม่มีการวนลูบ (ใช้ recursion แทน)
ซึ่งแนวคิดก็ต้องเน้นสร้างฟังก์ชั่นนั่นแหละ แต่หลักสำคัญต้องออกแบบให้หลีกเลี่ยง side-effect (ผลข้างเคียง) ที่จะเกิดต่อ function ตัวเอง และตัวอื่น โดยมีหลักยึด 2 อย่างใหญ่คือ
👉 1) function ที่สร้างขึ้นมา เมื่อมีอินพุตค่าเดิมส่งไปหา (เป็นค่าอากิวเมนต์) ไม่ว่าจะกี่ครั้งก็ตาม function จะรีเทิร์นค่าออกมาเหมือนเดิมทุกครั้ง ...(ไอเดียมาจากฟังก์ชั่นในทางคณิตศาสตร์เลยครับ)
เช่น
func(1); // เรียกครั้งที่ 1 ก็จะได้ค่ารีเทิร์นออกมาเป็น 30
func(1); // เรียกครั้งที่ 2 ก็จะได้ค่ารีเทิร์นออกมาเป็น 30 เหมือนเดิม
func(1); // เรียกครั้งที่ 3 ก็จะได้ค่ารีเทิร์นออกมาเป็น 30 เหมือนเดิม
👉 2) function ต้องไม่ไปเปลี่ยนแปลงค่าของตัวแปรจำพวก global variable หรือ static variable หรือตัวแปรที่อยู่ข้างนอก function ...เพื่อไม่ให้ function อื่นได้รับผลกระทบ
ถ้า function ที่เราประกาศไว้ มีคุณสมบัติ 2 อย่างที่ว่านี้ ก็จะเรียกว่า pure function (ฟังก์ชั่นบริสุทธ์แท้ๆ) 👌
สำหรับอีกคุณลักษณะหนึ่งที่จะไม่กล่าวถึงไม่ได้เลยก็คือ
👉 3) First-class function และ Higher-order function
คำว่า first-class function มาจาก "first class citizen" ที่หมายถึง "พลเมืองชั้นหนึ่ง" ดังนั้น first-class function จะหมายถึง ฟังก์ชั่นเป็นพลเมืองชั้นหนึ่งจริงๆ เลยนะ
คุณสมบัตินี้ function จะถูกมองเป็นข้อมูลประเภทหนึ่ง ไม่ต่างจากข้อมูลตัวเลข สตริง บูลีน ด้วยเหตุนี้จึงสามารถนำ function ไปกำหนดค่าให้กับตัวแปรยังได้เลย เช่น
x = function(){ .....}
ส่วนคุณสมบัติ Higher-order function:
คุณสมบัตินี้หมายถึง เราสามารถใช้ function ส่งไปเป็นค่าอากิวเมนต์แก่ function ตัวอื่น หรือ function จะรีเทิร์นออกมาจาก function ตัวอื่นออกมาก็ได้ด้วย เช่น
- ส่ง function_A เป็นค่าอากิวเมนต์ไปให้ function_X(function_A);
- จากนั้น function_X() ก็จะสร้าง function_Y แล้วรีเทิร์นมันออกมาได้
😜 ===ประโยชน์ functional programming===
🔥 เอาไปเขียนโปรแกรมโดยไม่มีการวนลูป เช่น ไม่ต้องมานั่งเขียน for … หรือ while… วนลูป เพื่อเข้าถึงข้อมูลโครงสร้างพวก array , list ฯลฯ เป็นต้น
🔥 การทำ currying หมายถึงทำให้ฟังก์ชั่น จากเดิมที่มี parameter หลายตัวให้เหลือแค่ตัวเดียว ด้วยการส่งผลลัพธ์เป็น function ที่รับ Parameter ที่เหลือ ...ใช้เทคนิค closure
🔥 หรือจะทำ function Composition (เอาฟังก์ชั่นมาประกอบกัน)
🔥 หรือจะเอาไปใช้เขียนโปรแกรมแบบ parallel computing (โปรแกรมคู่ขนาน)
🔥 หรือจะเขียนโปรแกรมแบบ asynchronous โดยที่โค้ดหลักไม่ต้องรอการประมวลผลฝั่ง I/O ให้แล้วเสร็จ โค้ดหลักสามารถข้ามไปยังบรรทัดถัดไปก่อนได้เลย
🔥 Testability — ผลพลอยได้ก็คือ เอาแนวคิดนี้ไปใช้ทำ test function ได้ง่าย โดยแต่ละการ test จะเป็นอิสระต่อกัน เมื่อใช้วิธีการเดิมในการทดสอบ 10 ครั้ง ก็ควรได้ผลเหมือนเดิม 10 ครั้ง เป็นต้น
++++ 🤔 ++++++
เมื่อเปรียบเทียบกับแนวคิด OOP (โปรแกรมเชิงวัตถุ object-oriented programming)
ถ้าโจทย์ปัญหาเป็น parallel computing หรือ asynchronous การใช้แนวคิด functional programming ดูแล้วคล่องแคล่วปราดเปรียวไม่ยุ่งยาก
เนื่องจากแนวคิด functional programming ไม่มีอะไรซับซ้อนมากนัก เขียนโปรแกรมก็จะกระชับ ง่าย...ง๊าย เมื่อเทียบกับ OOP ที่โค้ดจะเยอะกว่า เพราะมี class มากมาย ยิ่งถ้า inheritance โดยให้มีการสืบทอดสมาชิกหลายชั้น ก็จะสับสนตาลาย มึนงงได้ คงต้องพึ่ง IDE ให้เป็นพี่เลี้ยงช่วยแนะนำว่ามีสมาชิกอะไรที่สืบทอดมา
แต่จุดเด่นเรื่อง OOP จะมีความเป็น Modularity ที่สูง โค้ดที่เขียนเป็นอ็อบเจ็กต์แต่ละตัวจะเป็นอิสระต่อกัน เนื่องจากข้อมูลหรือ state ซึ่งอยู่ภายในตัวอ็อบเจ็กต์เอง จะมีเป็นของใครของมัน ขณะเดียวกันแต่ละอ็อบเจ็กต์จะปฏิสัมพันธ์กันได้ สามารถเอาอ็อบเจ็กต์ที่มีอยู่แล้วมา reuse ใช้ได้ง่าย รวมทั้งถอดเข้าถอดออกขณะโปรแกรม run time
แล้วแต่สถานการณ์ว่าจะใช้แนวทางเขียนโปรแกรมแบบไหน
แต่ก็ยอมรับว่าบางทีเขียนแบบ functional programming ก็ยากต่อการทำความเข้าใจ เพราะโค้ดมันสั้นกระชับเกิ๊น
ยิ่งหลายภาษาโปรแกรมมิ่งสมัยใหม่ในปัจจุบันนี้ มีการแทรกแนวคิด functional programming เข้ามา นอกเหนือจากแนวคิด OOP เช่น JavaScript, Python, Java, C#, Swift, Kotlin แต่ก็อาจประยุกต์แนวคิดนี้ได้ไม่ 100% มากนัก
จะไม่เหมือนบ้างภาษาเช่น Haskell ที่มาพร้อมกับ immutable data structure หมายถึงข้อมูลที่ไม่สามารถแก้ไขค่าได้เลย จึงทำให้ function กลายเป็น functional programming แท้ๆ (pure function)
✍ สรุป แนวคิดนี้ไม่ได้เรื่องใหม่มีมานานก่อนบางคน ...อุ้แว ...อุ้แวเกิดเสียอีก แต่ตอนโน่นแนวคิดนี้ยังไม่ดังเปรี้ยงเหมือน OOP คนที่เขียนภาษา JavaScript รวมไปถึง Node.js ย่อมใช้หลักการนี้อย่างไม่รู้ตัว ยิ่งภาษาสมัยใหม่หลายตัวก็ยอมรับแนวคิด functional programming เข้ามาในภาษาเรียบร้อยแล้ว ไม่มีนี้ถือว่าแปลกมาก
--------
เขียนโดย โปรแกรมเมอร์ไทย thai programmer
kotlin test 在 kotlinx-coroutines-test 的推薦與評價
This package provides testing utilities for effectively testing coroutines. Using in your project. Add kotlinx-coroutines-test to your project test dependencies ... ... <看更多>
kotlin test 在 kotest.io - GitHub 的推薦與評價
Powerful, elegant and flexible test framework for Kotlin with additional assertions, property testing and data driven testing - GitHub - kotest/kotest: ... ... <看更多>