عكس التبعية
الدرس 26 من 28 في دورة Clean Code - كتابة كود أفضل باستخدام Python على Coddy.
"اعتمد على التجريدات، [وليس] على التجسيدات."
لنوضّح مثالًا ينتهك هذا المبدأ،
class LocalStorage:
def save(self, key, value):
print("Saved, " + key + ":" + value)تقوم LocalStorage class بحفظ زوج المفتاح والقيمة.
لدينا الآن class رئيسية أخرى تستخدم LocalStorage،
class App:
def start(self, key, value):
storage = LocalStorage()
storage.save(key, value)إن LocalStorage عبارة عن تنفيذ ملموس، وتعتمد عليه App!
الطريقة الأفضل هي إنشاء واجهة (class مجردة)،
from abc import ABC, abstractmethod
class Storage(ABC):
@abstractmethod
def save(self):
passثم استخدام مثيل من الواجهة بدلًا من التنفيذ الملموس.
التحدي
سهللديك شيفرة اكتمل معظمها تقريبًا، أضف الفئة المجردة Storage.
لاحظ أنه بعد التنفيذ، يصبح من السهل التبديل إلى فئة ملموسة أخرى، مثل CloudStorage...
جرّب بنفسك
from abc import ABC, abstractmethod
# your code here
class LocalStorage(Storage):
def save(self, key, value):
print("Saved, " + key + ":" + value)
class App:
def __init__(self, storage):
self.storage = storage
def start(self, key, value):
storage.save(key, value)
if __name__ == "__main__":
storage = LocalStorage()
app = App(storage)
key = input()
value = input()
app.start(key, value)
جميع دروس Clean Code - كتابة كود أفضل باستخدام Python
تدرّب بنفسك: مترجم Python عبر الإنترنت