Today () เป็นฟังก์ชันที่ไม่บริสุทธิ์เนื่องจากผลลัพธ์ขึ้นอยู่กับบางสิ่งที่คุณไม่ให้ โดยเฉพาะเวลาระบบปัจจุบัน ดังนั้นผลลัพธ์ของมันจึงไม่ได้กำหนดขึ้นอยู่กับอินพุตที่มีให้ ณ การเรียกใช้เท่านั้น
int Add(int a, int b) {return a + b;}
ฟังก์ชั่นที่บริสุทธิ์จะเป็น ฟังก์ชั่นใช้งานได้เฉพาะกับสิ่งที่ได้รับและไม่ใช้ข้อมูลสถานะภายนอกอื่น ๆ ผลลัพธ์ตามธรรมชาติของสิ่งนี้คือคุณสามารถAdd(2,2)
และรับ 4 จากนี้ไปจนสิ้นสุด นอกจากนี้เนื่องจากฟังก์ชั่นจะไม่เปลี่ยนแปลงสถานะภายนอกใด ๆ (มันไม่มี "ผลข้างเคียง"), เพิ่ม () ระหว่าง 2 และ 2 ต่อจากนี้ไปจนถึงเวลาสิ้นสุดจะไม่เปลี่ยนแปลงสิ่งอื่นใดในระบบเว้นแต่คุณจะ กำหนดผลลัพธ์ของฟังก์ชันให้กับตัวแปรหรือใช้ค่าเพื่ออัพเดตสถานะ (ซึ่งไม่ใช่การดำเนินการที่ดำเนินการโดยฟังก์ชันเอง) การดำเนินการทางคณิตศาสตร์แบบคลาสสิกแทบทั้งหมดเป็นฟังก์ชั่นที่บริสุทธิ์และสามารถใช้งานได้
ในทางกลับกันวันนี้ () อาจสร้างมูลค่าเดียวกันเมื่อเรียกสองครั้งติดต่อกัน แต่ไม่เรียกซ้ำหลาย ๆ วัน นี่เป็นเพราะมันขึ้นอยู่กับข้อมูลสถานะภายนอกซึ่งคุณไม่ได้ให้ไว้เป็นพารามิเตอร์ของฟังก์ชัน ดังนั้นจึงเป็นไปไม่ได้ภายในขอบเขตของโปรแกรมเพื่อควบคุมผลลัพธ์ของฟังก์ชัน Today () มันจะสร้างมูลค่าที่กำหนดในวันที่กำหนดและจะไม่สร้างมูลค่านั้นในวันอื่น ๆ เว้นแต่ว่าคุณจะเปลี่ยนนาฬิการะบบของคอมพิวเตอร์ที่ใช้งานอยู่ (โดยทั่วไปการเปลี่ยนแปลงจะเกิดขึ้นนอกขอบเขตของโปรแกรม)
ฟังก์ชั่นที่ไม่บริสุทธิ์ไม่จำเป็นต้องเป็นสิ่งที่เลวร้าย จำเป็นต้องมีฟังก์ชั่นที่ไม่บริสุทธิ์แม้ในภาษาที่ใช้งานได้เพื่อโต้ตอบกับสิ่งใดก็ตามที่อยู่นอกขอบเขตของโปรแกรมเช่นที่เก็บข้อมูล, ท่อสื่อสาร, หน้าจอ UI, อุปกรณ์ต่อพ่วง ฯลฯ โปรแกรมที่ไม่ทำสิ่งเหล่านี้คือโปรแกรม ที่ถูก จำกัด อย่างรวดเร็วในยูทิลิตี้ของมัน; ฉันจะไปไกลถึงการเรียกโปรแกรมที่น่าสนใจเช่นนี้โดยที่ไม่มีวิธีรับอินพุตหรืออเวนิวใด ๆ เพื่อแจ้งให้คุณทราบถึงผลลัพธ์ของมันมันอาจจะไม่ทำอะไรเลย โปรแกรมที่เขียนด้วยภาษาที่ใช้งานได้มีเพียงอินพุตที่ให้โดยรันไทม์และสร้างเอาต์พุตที่รายงานไปยังรันไทม์โดยไม่มีวิธีการที่ไม่ชัดเจนใด ๆ แต่นั่นเป็นเพราะรันไทม์นั้นย่อส่วนรายละเอียดการทำงานภายในระบบคอมพิวเตอร์ที่ไม่สมบูรณ์
มันเป็นสิ่งที่ดีมากที่จะรู้ว่าฟังก์ชั่นที่คุณใช้นั้นบริสุทธิ์และฟังก์ชั่นใดที่ไม่ใช่เพื่อให้คุณสามารถตัดสินใจได้ดีเกี่ยวกับวิธีการใช้งาน ฟังก์ชั่นที่ไม่บริสุทธิ์เพราะพวกเขาทำสิ่งต่าง ๆ หรือขึ้นอยู่กับสิ่งที่ไม่ชัดเจนจากการใช้งานของพวกเขาอาจมีพฤติกรรมที่ไม่อาจคาดการณ์ได้เฉพาะความรู้เกี่ยวกับการใช้งาน จำเป็นต้องมีความรู้เพิ่มเติมเกี่ยวกับวัตถุประสงค์ของฟังก์ชั่นและสิ่งที่ต้องการจากหรือทำไปยังสถานะภายนอกจำเป็นต้องมีเพื่อวางระบบที่ใช้ในสถานะที่สอดคล้องกันและคาดหวังผลลัพธ์ที่กำหนดขึ้น