দ্বিতীয় রূপটি আমাকে বিভ্রান্ত করে তোলে। যখন আমি কেবল স্বাক্ষরটি দেখি, আমি অবাক হই যে ক্ষেত্রটি ইতিমধ্যে মৌমাছিটিকে অবৈধ হিসাবে পরিচিত? বা এটি validatingField
সত্যই অবৈধ কিনা তা খুঁজে বের করার জন্য এটি প্রথমে যাচাই করা হবে (যেমন এটি বলা হয় )? সুতরাং এটি এখানে কেবল অপ্রয়োজনীয় তথ্য নয়, অতিরিক্ত তথ্য কিছুটা বিভ্রান্তিকর বলে মনে হচ্ছে। এই ধরণের "স্পষ্টতা" পরিষ্কার নয়, এর বিপরীত।
আসলে, যখন আমি আপনার প্রথম ফাংশনটি দেখেছি, তা আমাকেও বিভ্রান্ত করেছে। আমি নিজেকে জিজ্ঞাসা করলাম কেন হ্যাক আপনার ক্রিয়াকলাপটি কেবল একটি ক্ষেত্র নেয়, কিন্তু তারপরে এটি ব্যবহার করে না এবং অন্য কোনওটির জন্য অনুসন্ধান করে invalidFields
? কেবল ক্ষেত্রের নাম দেওয়া থাকলে ক্ষেত্রের সন্ধান করা আরও বেশি অর্থবোধ করে বলে মনে হচ্ছে:
addInvalidField (fieldname, message) {
const foundField = this.invalidFields.find(value => {
return value.name === fieldname
})
const errors = foundField.errors
if (!errors.some(error => error.name === message)) {
errors.push({ name: message, message })
}
}
তবে আমার ধারণা, বব মার্টিন সম্ভবত আরও একধাপ এগিয়ে গিয়ে কোডটিকে আরও ভার্বোস করে তুলবেন - আরও স্পষ্টতার জন্য - অন্য দিকে। "ক্লিন কোড" বইয়ের লাইন ধরে একটি সাধারণ রিফ্যাক্টরিং সম্ভবত এটির মতো দেখাবে:
addInvalidField (fieldname, message) {
const foundField = findInvalidField(fieldName)
addMessageForInvalidField(foundField,message)
}
তিনটি অতিরিক্ত ফাংশন সহ
findInvalidField(fieldname){
return this.invalidFields.find(value => { return value.name === fieldname })
}
addMessageForInvalidField(field,message){
const errors = field.errors
if (!doesErrorsContain(message)) {
errors.push({ name: message, message })
}
}
doesErrorsContain(message){
return errors.some(error => error.name === message)
}
যদি এটি একক দায়িত্বের নীতিটি দিয়ে এতদূর এগিয়ে যায় তবে বিতর্কযোগ্য। এর আসলে কিছু উপকারিতা ও বিপরীতে রয়েছে। আমার ব্যক্তিগত দৃষ্টিভঙ্গি হ'ল মূল কোডটি বেশিরভাগ প্রোডাকশন কোডের জন্য "যথেষ্ট পরিষ্কার" তবে রিফ্যাক্টরেডটি আরও ভাল।
যখন আমি জানতাম যে আমাকে প্রথম বৈকল্পিকের সাথে কিছু যুক্ত করতে হবে যাতে এটি আরও এবং আরও বাড়বে, আমি এগুলি আগে থেকেই এই ছোট ফাংশনগুলিতে বিভক্ত করে দেব, তাই কোড এমনকি কোনও জগাখিচুড়ি হতে শুরু করবে না।