ตกลงดังนั้นชื่อเรื่องนั้นเป็นเรื่อง clickbaity เล็ก ๆ น้อย ๆ แต่อย่างจริงจังฉันได้รับการบอกไม่ต้องถามสักครู่ ฉันชอบที่มันส่งเสริมวิธีการที่จะใช้เป็นข้อความในแบบเชิงวัตถุจริง แต่นี่เป็นปัญหาที่จู้จี้ที่คร่ำครวญในหัวของฉัน
ฉันสงสัยว่ารหัสที่เขียนได้ดีสามารถปฏิบัติตามหลักการ OO และหลักการทำงานได้ในเวลาเดียวกัน return
ฉันพยายามที่จะกระทบความคิดเหล่านี้และจุดเกาะใหญ่ที่ผมเคยมีที่ดินบน
ฟังก์ชั่นบริสุทธิ์มีสองคุณสมบัติ:
การเรียกซ้ำ ๆ ด้วยอินพุตเดียวกันจะให้ผลลัพธ์เดียวกันเสมอ นี่ก็หมายความว่ามันไม่เปลี่ยนรูป สถานะของมันถูกตั้งค่าเพียงครั้งเดียว
มันไม่มีผลข้างเคียง การเปลี่ยนแปลงเพียงอย่างเดียวที่เกิดจากการเรียกมันคือการสร้างผลลัพธ์
ดังนั้นวิธีการอย่างใดอย่างหนึ่งเกี่ยวกับการทำงานอย่างหมดจดถ้าคุณได้สาบานว่าจะใช้return
เป็นวิธีการสื่อสารผลลัพธ์ของคุณ?
บอกไม่ได้ถามผลงานความคิดโดยใช้สิ่งที่บางคนจะพิจารณาผลข้างเคียง เมื่อฉันจัดการกับวัตถุฉันไม่ถามเกี่ยวกับสถานะภายในของวัตถุนั้น ฉันบอกสิ่งที่ฉันต้องทำและใช้สถานะภายในเพื่อหาว่าจะทำอย่างไรกับสิ่งที่ฉันบอกให้ทำ เมื่อฉันบอกมันฉันไม่ได้ถามว่ามันทำอะไร ฉันแค่หวังว่ามันจะทำอะไรบางอย่างเกี่ยวกับสิ่งที่มันถูกบอกให้ทำ
ฉันคิดว่า Tell, Don't Ask เป็นมากกว่าชื่อที่แตกต่างกันสำหรับการห่อหุ้ม เมื่อฉันใช้return
ฉันไม่มีความคิดในสิ่งที่เรียกว่าฉัน ฉันไม่สามารถพูดได้ว่าเป็นโปรโตคอลฉันต้องบังคับให้จัดการกับโปรโตคอลของฉัน ซึ่งในหลายกรณีได้รับการแสดงออกเป็นสถานะภายใน แม้ว่าสิ่งที่ได้รับการเปิดเผยไม่ได้ระบุอย่างชัดเจน แต่โดยทั่วไปแล้วการคำนวณบางอย่างที่ทำกับสถานะและอินพุต args มีอินเทอร์เฟซสำหรับการตอบสนองผ่านกำบังโอกาสที่จะนวดผลลัพธ์เป็นสิ่งที่มีความหมายมากกว่าสถานะภายในหรือการคำนวณ นั่นคือข้อความผ่าน ดูตัวอย่างนี้
ย้อนกลับไปในวันที่เมื่อดิสก์ไดรฟ์มีดิสก์อยู่ในนั้นและไดรฟ์หัวแม่มือคือสิ่งที่คุณทำในรถเมื่อล้อเย็นเกินไปที่จะสัมผัสด้วยนิ้วมือของคุณฉันได้รับการสอนว่าคนที่น่ารำคาญพิจารณาฟังก์ชั่น void swap(int *first, int *second)
ดูเหมือนมีประโยชน์มาก แต่เราได้รับการสนับสนุนให้เขียนฟังก์ชันที่ส่งคืนผลลัพธ์ ดังนั้นฉันจึงใส่ใจเรื่องความเชื่อและเริ่มติดตามมัน
แต่ตอนนี้ฉันเห็นผู้คนกำลังสร้างสถาปัตยกรรมที่วัตถุให้วิธีที่พวกเขาสร้างการควบคุมที่พวกเขาส่งผลลัพธ์ของพวกเขา นี่คือการใช้ตัวอย่าง การฉีดอ๊อบเจคพอร์ตเอาต์พุตดูเหมือนความคิดพารามิเตอร์ out ทั้งหมดอีกครั้ง แต่นั่นเป็นวิธีที่อย่าบอกให้ถามว่าวัตถุอื่น ๆ ทำอะไรบ้าง
เมื่อฉันเรียนรู้เกี่ยวกับผลข้างเคียงเป็นครั้งแรกฉันคิดว่ามันเหมือนกับพารามิเตอร์เอาต์พุต พวกเราถูกบอกไม่ให้แปลกใจกับคนที่มีงานบางอย่างเกิดขึ้นในแบบที่น่าประหลาดใจนั่นคือโดยไม่return result
ปฏิบัติตามอนุสัญญา ตอนนี้แน่นอนฉันรู้ว่ามีปัญหาการทำเกลียวแบบอะซิงโครนัสขนานกันที่มีผลข้างเคียงที่สกปรก แต่การกลับมาเป็นเพียงการประชุมที่คุณปล่อยให้ผลลัพธ์ถูกผลักลงบนสแต็กดังนั้นสิ่งที่เรียกว่า นั่นคือทั้งหมดที่มันเป็นจริง
สิ่งที่ฉันพยายามถามจริงๆ:
เป็นreturn
วิธีเดียวที่จะหลีกเลี่ยงความทุกข์ทรมานจากผลข้างเคียงทั้งหมดและได้รับความปลอดภัยของด้ายโดยไม่ต้องล็อค ฯลฯ หรือฉันจะติดตามบอกอย่าถามด้วยวิธีการที่ใช้งานได้จริง?