[คำปฏิเสธ: คำถามนี้เป็นอัตนัย แต่ฉันต้องการคำตอบที่ได้รับการสนับสนุนจากข้อเท็จจริงและ / หรือการสะท้อนกลับ]
ฉันคิดว่าทุกคนรู้เกี่ยวกับหลักการความแข็งแกร่งซึ่งมักจะสรุปตามกฎหมายของ Postel:
ระมัดระวังในสิ่งที่คุณส่ง มีอิสระในสิ่งที่คุณยอมรับ
ฉันยอมรับว่าสำหรับการออกแบบโปรโตคอลการสื่อสารที่กว้างขวางสิ่งนี้อาจสมเหตุสมผล (โดยมีเป้าหมายเพื่อให้ขยายได้อย่างง่ายดาย) อย่างไรก็ตามฉันคิดเสมอว่าแอปพลิเคชันสำหรับ HTML / CSS นั้นล้มเหลวทั้งหมดเบราว์เซอร์แต่ละตัวใช้การปรับแต่งเงียบ ๆ การตรวจจับ / พฤติกรรมทำให้เป็นไปไม่ได้ที่จะได้รับการเรนเดอร์ที่สอดคล้องกันในหลายเบราว์เซอร์
ฉันสังเกตเห็นว่ามี RFC ของโปรโตคอล TCP เห็นว่า "ยอมรับความล้มเหลว" เว้นแต่จะระบุไว้เป็นอย่างอื่น ... ซึ่งเป็นพฤติกรรมที่น่าสนใจที่จะพูดน้อย
มีตัวอย่างอื่น ๆ ของการประยุกต์ใช้หลักการนี้ตลอดการค้าซอฟต์แวร์ที่ปรากฏขึ้นอย่างสม่ำเสมอเพราะพวกเขามีผู้พัฒนาที่ถูกกัดตั้งแต่หัวจรดหัวของฉัน:
- การแทรกเซมิโคลอน Javascript
- การแปลง builtin C (เงียบ) (ซึ่งจะไม่เลวร้ายหากไม่ตัดทอน ... )
และมีเครื่องมือที่จะช่วยทำให้เกิดพฤติกรรม "ฉลาด":
- การจับคู่ชื่ออัลกอริทึมการออกเสียง ( Double Metaphone )
- ขั้นตอนวิธีระยะทางสตริง ( ระยะทาง Levenshtein )
อย่างไรก็ตามฉันพบว่าวิธีการนี้ในขณะที่มันอาจเป็นประโยชน์เมื่อจัดการกับผู้ใช้ที่ไม่ใช่ด้านเทคนิคหรือเพื่อช่วยผู้ใช้ในกระบวนการกู้คืนข้อผิดพลาดมีข้อบกพร่องบางอย่างเมื่อนำไปใช้กับการออกแบบอินเตอร์เฟซไลบรารี / คลาส:
- มันค่อนข้างเป็นอัตนัยไม่ว่าอัลกอริทึมจะเดาว่า "ถูกต้อง" หรือไม่และมันอาจขัดกับหลักการของความพิศวงน้อยที่สุด
- มันทำให้การใช้งานยากขึ้นจึงมีโอกาสมากขึ้นที่จะแนะนำข้อบกพร่อง (ละเมิดYAGNI ?)
- มันทำให้พฤติกรรมมีความอ่อนไหวต่อการเปลี่ยนแปลงมากขึ้นเนื่องจากการปรับเปลี่ยนใด ๆ ของรูทีน "เดา" อาจทำให้โปรแกรมเก่า ๆ เกือบจะยกเว้นความเป็นไปได้ในการปรับโครงสร้างใหม่ ... ตั้งแต่เริ่มต้น!
และนี่คือสิ่งที่นำฉันไปสู่คำถามต่อไปนี้:
เมื่อออกแบบอินเทอร์เฟซ (ไลบรารีคลาสข้อความ) คุณพึ่งพาหลักการความทนทานหรือไม่?
ตัวฉันเองนั้นค่อนข้างเข้มงวดโดยใช้การตรวจสอบอินพุตอย่างละเอียดบนอินเทอร์เฟซของฉันและฉันก็สงสัยว่าถ้าฉันเข้มงวดเกินไป