ฉันได้ฝึกฝนธนาคาร Kata โดย Sandro Mancuso
เป้าหมายของฉันที่จะฝึกฝนการผสมผสานของการผสมผสานนอก + คลาสสิกของ TDD (ความคิดโดย Manuel Rivero)
ติดตามเวลาโดยใช้ Git Commits
ฉันได้ใช้คุณสมบัติของการถ่ายโอนที่ปลอดภัย: บัญชีสามารถกำหนดค่าเพื่อขอรหัส (เช่น OTP) เพื่อตรวจสอบการถ่ายโอนสายทั้งขาออก (เช่นธนาคารส่วนใหญ่มีสิ่งนี้) เป็นขาเข้า
ฉันได้ตรวจสอบวิธีการอนุรักษ์คุณสมบัติของกรดแทนที่จะเลือกระบบที่สอดคล้องกันในที่สุด
เป็นพารามิเตอร์ของคลาสบัญชี: รหัส
นี่เป็นวิธีที่ง่ายที่สุด: ขึ้นอยู่กับประเภทของพารามิเตอร์เพื่อตัดสินใจพฤติกรรมของคลาส
เป็นเครื่องรัฐ: รหัส
กำหนดค่าสถานะและการเปลี่ยนเป็นส่วนภายใน/ภายนอกของคลาสการถ่ายโอนดังนั้นจึงทำให้มันเป็นแบบทั่วไปและในอนาคต (Yagni?)
สิ่งนี้สามารถแสดงโดยใช้การสืบทอดจากคลาสทั่วไป (ในกรณีนี้การถ่ายโอน) หรือใช้ wrapper (สถานะ <>) เพื่อแสดงถึงสถานะปัจจุบัน สำหรับอดีตมีรหัสการผลิต สำหรับหลังétudeด้านข้างที่ใช้ห้องสมุดเครื่องจักรของรัฐ (ใช้รถยนต์ + โรงงานเป็นโดเมน)
ในการดำเนินการมันมีความปลอดภัยน้อยกว่าไม่สะดวกในการทำงานกับการใช้งานนี้เนื่องจากลายเซ็นวิธีการค่อนข้างคลุมเครือ: สถานะใด ๆ ที่สามารถแสดงได้ภายใต้วัตถุการถ่ายโอน
เช่นเดียวกับ (เช่นการคำนวณที่ล้มเหลว): รหัส
อนุญาตให้คุณแสดงผลการคำนวณที่ชัดเจนสองอย่าง ซ้ายถูกใช้เพื่อหมายถึงการถ่ายโอนที่ถูกบล็อก/ปลอดภัยและขวาเพื่อหมายถึงการถ่ายโอนที่ไม่ถูกปิดกั้น
สิ่งนี้อนุญาตให้เป็นตัวแทนสองค่าในวิธีโดยนัย: ฉันทามติของทีมระบุซ้ายและขวาสำหรับความหมายเหล่านี้
นอกจากนี้ยังมีข้อ จำกัด ที่จะเห็น Either<T,T> โดยที่ทั้ง T เหมือนกัน เป็นไปได้ว่าสิ่งนี้เกิดจากการมีเครื่องรัฐโดยปริยาย (สืบทอดมาจากคลาสทั่วไป) + อย่างใดอย่างหนึ่ง
เป็น thunks (เช่นการคำนวณล่าช้า): รหัส
thunk ถูกส่งผ่านเป็นพารามิเตอร์และดำเนินการเมื่อจำเป็น ระบบนี้ไม่อนุญาตให้มีการคงอยู่/เก็บข้อมูลได้ง่ายเนื่องจากฟังก์ชั่นไม่สามารถเป็นอนุกรม/deserialized
เป็นเวิร์กโฟลว์ (เช่นชุดของขั้นตอนที่กำหนดไว้ล่วงหน้า): [รหัส] [https://github.com/alvarogarcia7/bank-kata-kotlin/tree/variant/control-safe-transfers-as-workflow]
เวิร์กโฟลว์นี้มีชุดของขั้นตอน (สามารถตรวจสอบได้หรือไม่) และในตอนท้ายมีชุดของการกระทำ
ขึ้นอยู่กับวิธีการใช้งาน (ข้อมูลเท่านั้นที่ผ่านไป แต่ไม่ใช่พฤติกรรม) สิ่งนี้อาจถูกทำให้เป็นอนุกรม / สัมผัสตลอดการพักผ่อน
f log --format="%s;%ct"|grep CLOCK|cut -d";" -f1 ให้ข้อความ f log --format="%s;%ct"|grep CLOCK|cut -d";" -f2 ให้เวลาเป็นมิลลิส
จากนั้นคัดลอกไปยังสเปรดชีตและคำนวณความแตกต่างเมื่อหยุด