আমার থাম্বের নিয়মটি হ'ল যখন আমাকে তৃতীয়বারের জন্য কিছু করতে হবে তখন সময় হয় এটি স্বয়ংক্রিয়ভাবে লেখার জন্য একটি ছোট স্ক্রিপ্ট লিখুন, বা আমার পদ্ধতির পুনর্বিবেচনা করবেন।
আমি এই মুহুর্তে একটি পূর্ণ-বিকাশযুক্ত "সরঞ্জাম" তৈরি করছি না, কেবল একটি ছোট স্ক্রিপ্ট (সাধারণত বাশ বা পাইথন; পারল খুব বেশি কাজ করবে, বা এমনকি পিএইচপি) যা আমি নিজে আগে যা করেছি তা স্বয়ংক্রিয়ভাবে ব্যবহার করে। এটি মূলত ডিআরওয়াই নীতির একটি প্রয়োগ (বা সত্যের একক উত্স, যা মূলত একই জিনিস) - যদি আপনাকে দুটি উত্স ফাইল পরিবর্তন করতে হয় তবে তাদের ভাগ করে নেওয়া কিছু সাধারণ সত্য থাকতে হবে এবং সত্যকে কেন্দ্র করে একটি কেন্দ্রীয় জায়গায় সংরক্ষণ করতে হয়। আপনি যদি অভ্যন্তরীণভাবে রিফ্যাক্টরিংয়ের মাধ্যমে এটি সমাধান করতে পারেন তবে এটি দুর্দান্ত but তবে কখনও কখনও এটি সম্ভব হয় না এবং সেখানেই কাস্টম স্ক্রিপ্টগুলি আসে।
তারপরে, স্ক্রিপ্টটি পুরো-বিকাশের সরঞ্জামে বিকশিত হতে পারে বা নাও হতে পারে তবে আমি সাধারণত খুব নির্দিষ্ট একটি স্ক্রিপ্ট দিয়ে প্রচুর জিনিসগুলিতে হার্ড-কোডড দিয়ে শুরু করি।
আমি একটি আবেগ দিয়ে গ্রান্ট কাজ ঘৃণা করি, তবে আমি দৃ strongly়ভাবে বিশ্বাস করি যে এটি খারাপ বা ভুল ডিজাইনের লক্ষণ। প্রোগ্রামারের ক্ষেত্রে অলস হওয়া একটি গুরুত্বপূর্ণ গুণ, এবং পুনরাবৃত্তিমূলক কাজ এড়াতে আপনি অনেক ধরণের হয়ে যাওয়ার পক্ষে এটি আরও ভাল।
অবশ্যই, কখনও কখনও ভারসাম্যটি নেতিবাচক হয় - আপনি আপনার কোডটি রিফ্যাক্ট করতে বা একটি স্ক্রিপ্ট লেখার জন্য আপনাকে এক ঘন্টা পুনরাবৃত্তিমূলক কাজ বাঁচাতে ব্যয় করেন; তবে সাধারণত, ভারসাম্যটি ইতিবাচক হয়, তাই যদি আপনি সরাসরি ব্যয়গুলি সরাসরি বিবেচনা না করে বিবেচনা করেন: মানুষের ব্যর্থতা (পুনরাবৃত্তিমূলক কাজে মানুষ সত্যই খারাপ), ছোট কোডবেস, অপ্রয়োজনীয় হ্রাসের কারণে আরও ভাল রক্ষণাবেক্ষণ, আরও ভাল স্ব-ডকুমেন্টেশন, দ্রুত ভবিষ্যত বিকাশ, ক্লিনার কোড। সুতরাং এখনই ব্যালেন্স নেতিবাচক প্রদর্শিত হলেও, কোডবেস আরও বাড়বে এবং তিনটি ডেটা অবজেক্টের জন্য ওয়েব ফর্ম তৈরি করতে আপনি যে টুলটি লিখেছেন তা এখনও কাজ করবে যখন আপনার ত্রিশটি ডেটা অবজেক্ট থাকবে। আমার অভিজ্ঞতার মধ্যে, ভারসাম্যটি সাধারণত গ্রান্ট কাজের পক্ষে অনুমান করা হয়, সম্ভবত পুনরাবৃত্তিমূলক কাজগুলি অনুমান করা সহজ এবং এইভাবে কম-অনুমিত হয়, যখন রিফ্যাক্টরিং, স্বয়ংক্রিয়করণ এবং বিমূর্তিটি কম অনুমানযোগ্য এবং আরও বিপজ্জনক হিসাবে ধরা হয় এবং এইভাবে অতিরিক্ত অনুমান করা হয়। এটি সাধারণত সক্রিয় হয় যে স্বয়ংক্রিয়করণ সর্বোপরি এত কঠিন নয়।
এবং তারপরে এটি খুব দেরিতে করার ঝুঁকি রয়েছে: তিনটি ব্র্যান্ডের নতুন ডেটা অবজেক্ট ক্লাসগুলি আকারে তৈরি করা এবং তাদের জন্য ওয়েব ফর্ম তৈরি করে এমন একটি স্ক্রিপ্ট লিখতে সহজ, এবং একবার আপনি এটি সম্পন্ন করার পরে আরও 27 টি ক্লাস যুক্ত করা সহজ easy আপনার স্ক্রিপ্ট নিয়েও কাজ করুন। তবে আপনি যখন এমন একটি বিন্দুতে পৌঁছেছেন যেখানে 30 টি ডেটা অবজেক্ট ক্লাস রয়েছে, যেখানে প্রতিটি হাতে হাতে লিখিত ওয়েব ফর্ম রয়েছে এবং তাদের মধ্যে কোনও অবিচ্ছিন্নতা ছাড়াই (ওরফে "জৈবিক বৃদ্ধি") এই স্ক্রিপ্টটি লেখা অসম্ভবের কাছাকাছি। এই ফর্মগুলির সাথে 30 টি শ্রেণি বজায় রাখা পুনরাবৃত্ত কোডিং এবং আধা-ম্যানুয়াল অনুসন্ধান-প্রতিস্থাপনের একটি দুঃস্বপ্ন, সাধারণ দিকগুলি পরিবর্তন করা যত বেশি সময় লাগে ততক্ষণ সময় লাগে তবে সমস্যাটি সমাধান করার জন্য একটি স্ক্রিপ্ট লিখে, প্রকল্পটি শুরু হওয়ার পরে যা দুপুরের খাবারের বিরতি নন-ব্রেইনার হত, এখন বাগ-ফিক্সিং, ব্যবহারকারীদের শিক্ষিত করা এবং সম্ভবত ত্যাগ ও প্রত্যাবর্তন নিয়ে গঠিত এক মাসব্যাপী ভয়ঙ্কর সম্ভাবনা সহ এক ভয়াবহ দুই সপ্তাহের প্রকল্প is পুরানো কোডবেস হাস্যকরভাবে, 30-শ্রেণির মেসটি লেখার জন্য পরিষ্কার সমাধানের চেয়ে বেশি সময় নিয়েছে, কারণ আপনি সেই সময়টি সুবিধামত স্ক্রিপ্টটি চালিয়ে যেতে পারতেন। আমার অভিজ্ঞতায়, পুনরাবৃত্তিমূলক কাজটি খুব দেরিতে দূরে সরিয়ে নেওয়া দীর্ঘস্থায়ী বড় সফ্টওয়্যার প্রকল্পগুলির অন্যতম প্রধান সমস্যা। কারণ আপনি সমস্ত সময় সুবিধাজনক স্ক্রিপ্টটি চালিয়ে যেতে পারতেন। আমার অভিজ্ঞতায়, পুনরাবৃত্তিমূলক কাজটি খুব দেরিতে দূরে সরিয়ে নেওয়া দীর্ঘস্থায়ী বড় সফ্টওয়্যার প্রকল্পগুলির অন্যতম প্রধান সমস্যা। কারণ আপনি সমস্ত সময় সুবিধাজনক স্ক্রিপ্টটি চালিয়ে যেতে পারতেন। আমার অভিজ্ঞতায়, পুনরাবৃত্তিমূলক কাজটি খুব দেরিতে দূরে সরিয়ে নেওয়া দীর্ঘস্থায়ী বড় সফ্টওয়্যার প্রকল্পগুলির অন্যতম প্রধান সমস্যা।