As stated, the SOLID principles applies where object-orientation is used, and the problems you listed can be easily expanded to well-engineered object-oriented codebases, not only to the SOLID principles. 

SOLID principles, however, can be used also in other programming paradigms, as procedural:
Single Responsibility Principle (SRP): A procedure should have only one reason to change. This means that a procedure should be focused on performing a specific task and not try to do multiple things.

Open/Closed Principle (OCP): Procedures should be open for extension but closed for modification. This means that new functionality should be added by creating new procedures rather than modifying existing ones.

Liskov Substitution Principle (LSP): Procedures that are interchangeable with each other should have the same inputs and outputs. This means that procedures with similar signatures should be interchangeable without causing any issues.

Interface Segregation Principle (ISP): Procedures should not be forced to implement interfaces they do not use. This means that procedures should only implement the necessary inputs and outputs and not include unnecessary ones.

Dependency Inversion Principle (DIP): High-level procedures should not depend on low-level procedures. Both should depend on abstractions. This means that procedures should depend on abstractions rather than concrete implementations.
ตามที่ระบุไว้ หลักการ SOLID นำไปใช้เมื่อมีการใช้การวางแนววัตถุ และปัญหาที่คุณระบุไว้สามารถขยายไปยังฐานโค้ดเชิงวัตถุที่ออกแบบมาอย่างดีได้อย่างง่ายดาย ไม่ใช่แค่หลักการ SOLID เท่านั้น อย่างไรก็ตาม หลักการ SOLID ยังสามารถนำมาใช้ในกระบวนทัศน์การเขียนโปรแกรมอื่นๆ ได้ด้วย ตามขั้นตอน: หลักการความรับผิดชอบเดี่ยว (SRP): ขั้นตอนควรมีเหตุผลเดียวเท่านั้นที่จะเปลี่ยนแปลง ซึ่งหมายความว่าขั้นตอนควรมุ่งเน้นไปที่การปฏิบัติงานเฉพาะเจาะจงและไม่พยายามทำหลายสิ่ง หลักการเปิด/ปิด (OCP): ขั้นตอนควรเปิดเพื่อขยายเวลา แต่ปิดเพื่อแก้ไข ซึ่งหมายความว่าควรเพิ่มฟังก์ชันการทำงานใหม่โดยการสร้างขั้นตอนใหม่แทนที่จะแก้ไขขั้นตอนที่มีอยู่ หลักการทดแทน Liskov (LSP): ขั้นตอนที่สามารถใช้แทนกันได้ควรมีอินพุตและเอาต์พุตเหมือนกัน ซึ่งหมายความว่าขั้นตอนที่มีลายเซ็นคล้ายกันควรใช้แทนกันได้โดยไม่ทำให้เกิดปัญหาใดๆ หลักการแยกส่วนต่อประสาน (ISP): ขั้นตอนไม่ควรถูกบังคับให้ใช้ส่วนต่อประสานที่ไม่ได้ใช้ ซึ่งหมายความว่าขั้นตอนควรใช้เฉพาะอินพุตและเอาต์พุตที่จำเป็นเท่านั้น และไม่รวมถึงอินพุตและเอาท์พุตที่ไม่จำเป็น หลักการผกผันการพึ่งพา (DIP): ขั้นตอนระดับสูงไม่ควรขึ้นอยู่กับขั้นตอนระดับต่ำ ทั้งสองควรขึ้นอยู่กับนามธรรม ซึ่งหมายความว่าขั้นตอนควรขึ้นอยู่กับนามธรรมมากกว่าการใช้งานที่เป็นรูปธรรม
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence