نقل التابع (Move Method).
يتم استخدام تابع في فئة أخرى أكثر من استخدامه في الفئة الخاصة به.
أنشئ تابعاً جديداً في الفئة التي تستخدم التابع بشكل أكبر، ثم انقل الكود من التابع القديم إلى هناك. حوّل كود التابع الأصلي إلى إشارة مرجعية للتابع الجديد في الفئة الأخرى أو احذفه تماماً.
##Example


##Why Refactor
-
تريد نقل تابع إلى فئة تحتوي على معظم البيانات التي يستخدمها التابع. هذا يجعل الفئات أكثر تماسكاً داخلياً.
-
تريد نقل تابع لتقليل أو إزالة اعتمادية الفئة المستدعية للتابع على الفئة التي يقع فيها حالياً. قد يكون هذا مفيداً إذا كانت الفئة المستدعية تعتمد بالفعل على الفئة التي تخطط لنقل التابع إليها. وهذا يقلل من الاعتمادية بين الفئات.
##How to Refactor
-
تحقق من جميع الميزات (Features) التي يستخدمها التابع القديم في فئته. قد تكون فكرة جيدة أن تنقلها هي الأخرى أيضاً. كقاعدة عامة، إذا كانت الميزة مستخدمة فقط بواسطة التابع قيد النظر، فيجب عليك بالتأكيد نقل هذه الميزة إليه. أما إذا كانت الميزة مستخدمة من قبل توابع أخرى أيضاً، فيجب عليك نقل تلك التوابع كذلك. في بعض الأحيان، يكون من الأسهل بكثير نقل عدد كبير من التوابع بدلاً من إقامة علاقات بينها في فئات مختلفة.
تأكد من أن التابع غير مصرح به في الفئات الفائقة (Superclasses) والفئات الفرعية (Subclasses). فإذا كان الأمر كذلك، فسيتعين عليك إما الامتناع عن النقل أو تطبيق نوع من تعدد الأشكال (Polymorphism) في الفئة المستقبِلة لضمان تباين وظائف التابع الموزعة بين الفئات الواهبة.
-
صرح بالتابع الجديد في الفئة المستقبِلة. قد ترغب في إعطاء اسم جديد للتابع يكون أكثر ملاءمة له في الفئة الجديدة.
-
حدد كيفية الإشارة إلى الفئة المستقبِلة. قد يكون لديك بالفعل حقل أو تابع يعيد كائناً مناسباً، وإذا لم يكن كذلك، فستحتاج إلى كتابة تابع أو حقل جديد لتخزين كائن الفئة المستقبِلة.
الآن لديك طريقة للإشارة إلى كائن المستقبِل وتابع جديد في فئته. وبوجود كل هذا، يمكنك تحويل التابع القديم إلى مجرد إشارة مرجعية للتابع الجديد.
-
ألقِ نظرة: هل يمكنك حذف التابع القديم تماماً؟ إذا كان الأمر كذلك، فضع إشارة مرجعية للتابع الجديد في جميع الأماكن التي تستخدم التابع القديم.