Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

عكس التبعية

الدرس 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

ثم استخدام مثيل من الواجهة بدلًا من التنفيذ الملموس. 

challenge icon

التحدي

سهل

لديك شيفرة اكتمل معظمها تقريبًا، أضف الفئة المجردة 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 عبر الإنترنت