ฉันรู้อย่างเต็มที่ว่าpylint
และเครื่องมือวิเคราะห์แบบคงที่อื่น ๆ ไม่ได้รู้ทั้งหมดและบางครั้งคำแนะนำของพวกเขาจะต้องไม่เชื่อฟัง (ใช้กับคลาสข้อความที่หลากหลายไม่ใช่แค่convention
s)
ถ้าฉันมีชั้นเรียนเช่น
class related_methods():
def a_method(self):
self.stack.function(self.my_var)
class more_methods():
def b_method(self):
self.otherfunc()
class implement_methods(related_methods, more_methods):
def __init__(self):
self.stack = some()
self.my_var = other()
def otherfunc(self):
self.a_method()
เห็นได้ชัดว่ามีการวางแผน นี่เป็นตัวอย่างที่ดีกว่าหากคุณต้องการ
ฉันเชื่อว่าสไตล์นี้เรียกว่าใช้ "มิกซ์"
เช่นเดียวกับเครื่องมืออื่น ๆpylint
อัตรารหัสนี้ที่-21.67 / 10
ส่วนใหญ่เพราะมันคิดmore_methods
และrelated_methods
ไม่ได้มีself
หรือแอตทริบิวต์otherfunc
, stack
, annd my_var
เพราะโดยไม่ต้องใช้รหัสที่มันเห็นได้ชัดว่าไม่สามารถดูrelated_methods
และมีผสมในmore_methods
implement_methods
คอมไพเลอร์และเครื่องมือวิเคราะห์แบบสแตติกไม่สามารถแก้ปัญหาการหยุดนิ่งได้เสมอไปแต่ฉันรู้สึกว่านี่เป็นกรณีที่มองว่าสิ่งที่สืบทอดมาimplement_methods
จะแสดงให้เห็นว่าสิ่งนี้เป็นสิ่งที่ถูกต้องสมบูรณ์และนั่นก็เป็นเรื่องง่ายมาก
ทำไมเครื่องมือวิเคราะห์แบบคงที่ปฏิเสธรูปแบบ OOP ที่ถูกต้อง (ฉันคิดว่า)
ทั้ง:
พวกเขาไม่แม้แต่จะลองตรวจสอบการสืบทอดหรือ
มิกซ์อินถูกทำให้หมดกำลังใจใน Python ซึ่งเป็นสำนวนที่อ่านง่าย
# 1 เห็นได้ชัดว่าไม่ถูกต้องเพราะถ้าฉันขอpylint
บอกฉันเกี่ยวกับคลาสของฉันที่สืบทอดมาunittest.TestCase
ซึ่งใช้ self.assertEqual
(สิ่งที่กำหนดไว้ในเท่านั้นunittest.TestCase
) มันไม่บ่น
มิกซ์อินเป็นเสียงไพเราะหรือท้อแท้หรือไม่?