কোড রিফ্যাক্টরিং সময়কে কীভাবে ন্যায়সঙ্গত করা যায়?


17

70k এলওসি-র চেয়েও বেশি বড় একটি প্রকল্প করুন।

প্রকল্পের অবশ্যই কোর ফ্রেমওয়ার্ক এবং অন্যান্য অংশেও কিছু কোড রিফ্যাক্টরিং দরকার। রিফ্যাক্টরিংয়ের জন্য প্রকল্পের শুরুতে কোনও সময় নির্ধারণ করা হয়নি। তবে সময় এবং 40 টিরও বেশি বিকাশকারী যৌথভাবে এই প্রকল্পটি রেখে গেছেন। আমার দৃষ্টিকোণ থেকে অপরিহার্য।

সঠিক সফ্টওয়্যার বিকাশের নীতিটি বিতর্ক এবং রক্ষার ক্ষেত্রে আপনার মূল বিষয়গুলি কী হবে?


9
70k এলওসি খুব বড় প্রকল্প নয়। আমি এটিকে ছোট
বলব

@ বিউ সত্য, আমি একক উত্স ফাইলগুলি পেয়েছি যা 10 কে এলওসি এর বহু গুণ ছিল
জেমস

1
সেকি। একটি 10 ​​কে এলওসি ফাইল পড়া বড় বই পড়ার মতো। একবার আপনি শেষে পৌঁছে, আপনি শুরু ভুলে গেছেন। আমার প্রকল্পে আমার একটি 10 ​​কে এলওসি উত্তরাধিকার শ্রেণি রয়েছে এবং প্রতিটি পরিবর্তনই একটি ব্যথা। ইমেজিং করা যায় না কেমন হয় বেশ কয়েকটা!
BЈовић

উত্তর:


19

লিগ্যাসি বা ব্রাউনফিল্ড অ্যাপ্লিকেশন নিয়ে কাজ করার সময় পুরো জিনিসটি আবার আকারে ফেলার আশা করে "স্প্রিং ক্লিনিং" করতে প্ররোচিত হয়। এটি কোনওভাবেই সংস্থানগুলির ন্যায়সঙ্গত ব্যবহার নয়। সর্বোপরি, কীভাবে চলমান সফ্টওয়্যার (কেবলমাত্র ওয়ার্কিং কোডটি রিফ্যাক্টর করা যায়) সমর্থনযোগ্য? আপনি কি গ্যারান্টি দিতে পারবেন যে বিগ রিফ্যাক্টরিং পর্যায়ে ব্যয় করা সময়টি পরে পরিশোধ করতে হবে এবং প্রকল্পটির অবক্ষয় ঘটবে না?

কিভাবে আপনি একটি হাতি খাবেন? এক সময় একটি কামড় যখনই আপনাকে নতুন বৈশিষ্ট্যটি প্রয়োগ করতে হবে বা কোনও বাগ ঠিক করতে হবে আপনি দেখতে পাচ্ছেন যে সেই অংশটির সংস্কার প্রয়োজন। ছেলে স্কাউটের নিয়মের মতো বলেছেন: "ক্যাম্পগ্রাউন্ডটিকে আপনি যতটা খুঁজে পেয়েছেন তার চেয়ে ক্লিনারটি সর্বদা ছেড়ে দিন" " রিফ্যাক্টরিং কোনও পৃথক পর্যায় হওয়া উচিত নয়, এটি প্রতিটি দিনের বিকাশের অংশ।

আপনি যখন এই উন্নয়নের টিমের সাথে মানটির এই সংস্কৃতিটি চালু করবেন তখন মানটি উন্নত হবে। তারপরে ম্যানেজমেন্টকে ন্যায্যতা দেওয়ার কিছু নেই।


উফ, কখনও হাতির চেষ্টা করেননি
জ্যাকি চ্যান

আমি আমার প্রকল্পেও এই মানসিকতা স্থাপন করার চেষ্টা করি। আসন্ন পরিবর্তনের জন্য আমাদের কিছু বড় পরিবর্তন করতে হবে, তবে আমরা চলার সময় প্রয়োজনীয় রিফ্যাক্টরিং করতে চাই। কোন বিন্দু কোনো উন্নয়ন ছাড়া * বড় refactoring ফেজ টান করার চেষ্টা করছে "কার্ড।
ধামা ধরা

3
আমরা ছেলে স্কাউট নিয়ম করেছি। কোনও ছোট কামড় না রেখে অবধি কাজ করে। এমন কিছু অংশ রয়েছে যেগুলি এতটাই জড়িয়ে পড়েছে যে এটির জন্য সময় ব্যয় করা ছাড়া আর কোনও উপায় নেই।
এথোথ

13

সাধারণভাবে, কোডে আপনাকে পরিবর্তন করার পরে কোডটিতে পরিবর্তন করার পরে প্রাকৃতিক সাফ-আপ পদক্ষেপ হিসাবে আরও একটি পরিবর্তন সক্ষম করার জন্য রিফ্যাক্টরিং করা উচিত। সেক্ষেত্রে ন্যায়সঙ্গত হওয়ার মতো কিছুই নেই। রিফ্যাক্টরিং সহজভাবে প্রকল্পের কাজ করার প্রক্রিয়া অংশ। আপনি রিফ্যাক্টরিং করার সময় আপনি যে কাজটিতে কাজ করেছিলেন তার সময়টি বিল করা হবে।

যদি এটি ছোট ইনক্রিমেন্টে না করা হয়, তবে এটি আসলে রিফ্যাক্টরিং নয়, তাই না?


8

সমস্ত ভাল উত্তর এখানে - তবে আমি এটিতে একটি ব্যবসায়ের মাত্রা যুক্ত করতে পারি। আমাকে জিজ্ঞাসা করতে দাও কেন / কী? (আপনার গুরুত্বপূর্ণ চুলের বস সম্পর্কে চিন্তা করুন (পিএইচবি) :)

পিএইচবি: কেন?
আপনি: এটি ঠিক করা জিনিসগুলিকে আরও সহজ করে তুলবে
পিএইচবি: তাই-কি?
আপনি: এর মাধ্যমে আউটপুট বাড়বে - আমরা নতুন দরজাগুলি দ্রুত বাড়িয়ে দেব?
পিএইচবি: তাই-কি?
আপনি: এরর ... সুখী গ্রাহক?
পিএইচবি: ডাব্লুটিএফ?
আপনি: মানে বর্ধিত সুপারিশ, বৃহত্তর তৃপ্তি, 
     টার্নআরাউন্ডের কারণে শীঘ্রই আরও লাভ
পিএইচবি: ওহ! চমৎকার শোনাচ্ছে. তবে এটি কেবল "শব্দের" সুন্দর তা কি আমি দেখতে পাচ্ছি?
আপনি: ডব্লিউটিএফ?
পিএইচবি: আমাকে টাকা দেখান! (যেমন সংখ্যা দয়া করে)
তুমি: ওহ! বিআরবি ... (আপনার কেস তৈরি করতে সাধারণ স্প্রেডশিটে কিছু নম্বর দিন)

মূলত আপনাকে অবশ্যই একটি ব্যবসায়ের ক্ষেত্রে তৈরি করতে হবে - আপনার চিন্তার প্রক্রিয়াটি স্পষ্ট করতে কয়েকটি সংখ্যা চালান এবং উদ্দেশ্যটি 'সুবিধা' প্রতিফলনের জন্য নম্বরগুলি পান। এটি কতটা সময় নেবে, আনুমানিক ব্যয় ইত্যাদিও তা বুঝতে হবে। যদি এটির মূল্য হয় তবে আপনি সবুজ সংকেত পাবেন এবং সম্ভবত উদ্যোগটি এগিয়ে নেবেন :)

আপনি যদি ভাবেন যে আমি কীভাবে সবকিছু পরিমাপ করতে পারি এই বইটি ব্যবহার করে দেখুন


6

অন্য কোনও ক্রিয়াকলাপের মতো রিফ্যাক্টরিংয়েরও অবশ্যই এটির জন্য একটি পরিষ্কার লক্ষ্য নির্ধারণ করা উচিত। এই লক্ষ্যটি পরিষ্কার হয়ে গেলে আপনি বর্তমান প্রকল্পের অবস্থা এবং জীবনচক্রের স্তরটি বিবেচনা করবেন। ৮০% সম্পূর্ণ, এমন একটি উন্নয়ন প্রকল্পের জন্য, সময়সূচির পিছনে 30% আপনার পূর্ববর্তী লক্ষ্যমাত্রার উপর ভিত্তি করে রিফ্যাক্টরিং প্রচেষ্টা যথাযথ করা উচিত। এই উদাহরণস্বরূপ, যদি কোড টুকরা ইউনিট পরীক্ষা করা হয়েছিল এবং একটি বিকাশের পরিবেশে ভাল কাজ করছে, তবে রিফ্যাক্টরিংয়ের ন্যায়সঙ্গত হওয়া শক্ত।

40 বিকাশকারী বামদের যতটুকু শোনা যায় ততটা নাটকীয় হতে পারে না। আমি প্রত্যাশা করব যে সেই বিকাশকারীগণ কার্যকরী কোড সরবরাহ করেছেন যা পর্যালোচনা ও পরীক্ষিত হয়েছিল। সুতরাং, এই কোডটিতে কোনও সমস্যা না থাকলে আমি এটিকে যেমন রাখি। ধারণাটি হ'ল আপনার মতো বৃহত প্রকল্পে, আমি প্রত্যাশা করব যে মানক এবং পদ্ধতি ছিল এবং কোডটি সম্পূর্ণ গণ্ডগোল নয়।

মনে রাখবেন যে সমস্ত পরীক্ষাগুলি পুনরাবৃত্তি করা না হলে রিফ্যাক্টরিং অনেকের কারণ ঘটায়। এছাড়াও, যেহেতু এই আকারের রিফ্যাক্টরিং একজন বা দুজন প্রবীণ সদস্য দ্বারা করা সম্ভব নয়, তাই রিফ্যাক্টরিং এমন সমস্যাগুলির পরিচয় দিতে পারে যা অস্তিত্বহীন ছিল। এটি এমন ঝুঁকি যা অবহেলা করা উচিত নয়।

এটি বলার পরেও, যখন অপ্রত্যাশিত ঘটনা ঘটে তখন কোনও প্রকল্পে কাজ যুক্ত করা অস্বাভাবিক কিছু নয়। সুতরাং, যদি বিকাশকারীরা কোনও কারণে অদৃশ্য হয়ে যায় তবে এটিকে একটি বিশেষ প্রকৃতির একটি ইভেন্ট হিসাবে বিবেচনা করা হবে এবং পরিস্থিতি সমাধানে যে কোনও পদক্ষেপ নেওয়া উচিত। এটি আগুন বা ভূমিকম্প ইত্যাদির মতো আচরণ করা হবে etc.

সংক্ষেপে, আমি কোনও ভাল দৃ technical় প্রযুক্তিগত কারণে বড় প্রকল্পে বৃহত ওয়ার্কিং কোডটি রিফ্যাক্টর করব না, বিশেষত আমরা সকলেই জানি যে বেশিরভাগ প্রকল্প সাধারণত দেরিতে থাকে।


3
এক শুধুমাত্র আশা করতে পারেন আপনার প্রকল্পের ব্যর্থ পরীক্ষার আছে ...
রিগ

2
@ রিগ যদি না থাকে তবে আমি কিছু লিখে শুরু করব। প্রতিটি বাগ আপনি খুঁজে পান, একটি পরীক্ষা লিখুন যা এটির ফিক্সিংকে ক্যাপচার করবে। আপনি কোথাও শুরু করতে হবে। আপনি যদি আমি উদ্দেশ্যমূলকভাবে "আমি কিছু ভাঙ্গি না" বলতে সক্ষম না হন তবে কোনও কিছুর পুনঃনির্ধারণের কোনও অর্থ নেই।
জন লিয়ন

6

কল্পনা করুন যে আপনি একটি দীর্ঘ এবং বিশাল প্রাচীরের সামনে রয়েছেন। আপনার অন্যদিকে যেতে হবে।

হয় আপনি কোনও দরজা তৈরির জন্য প্রাচীরটিকে রিফ্যাক্টর করুন অথবা আপনি তার চারপাশে যান।

উভয় সমাধানের জন্য সময় অনুমান করুন এবং আপনি রিফ্যাক্টরিংয়ের জন্য আপনার ন্যায়সঙ্গততা পাবেন।

প্রাচীরের অন্য দিকে যাওয়ার জন্য প্রয়োজনীয় সংখ্যার দ্বারা দ্বিতীয় সমাধানে সময়কে গুণতে ভুলবেন না।


1

আমি যেমন অন্য একটি উত্তরে পড়েছি, একবারে এই হাতির একটি কামড় খাবেন। আমি একটি বৃহত আন্তর্জাতিক প্রকল্পের নিরীক্ষণের সাথে জড়িত আছি, যেখানে দলের সদস্যরা ভৌগলিকভাবে ছড়িয়ে পড়েছেন। সফ্টওয়্যারটির প্রথম দুটি সংস্করণ তৈরির পরে টিম একমত হয়েছিল যে তাদের পদ্ধতির কোডিংয়ের ধরণ এবং বিল্ডিং সমাধানগুলি অসঙ্গত। তারা নতুন নিয়ম এবং কনভেনশন অনুসরণ করে অ্যাপ্লিকেশনটির নতুন অংশগুলি লিখতে সম্মত হয়েছিল এবং যখন (এবং কেবল তখনই) তাদের পুরানো কোডের কিছু পরিবর্তন করতে হবে, তারা নতুন কনভেনশনটি পূরণের জন্য প্রথমে এটি রিফ্যাক্টর করে। সবকিছু বেশ ভালভাবে কাজ করছে। রিফ্যাক্টরিং প্রক্রিয়াটি প্রায় 5 তম মাসে, কিছু কোড রিফ্যাক্টর হয়, এখনও কিছু হয় না। নতুন বৈশিষ্ট্যগুলি সময়ে আনা হয়, ক্লায়েন্টরা খুশি হয়, দেবগণ খুশি হয়, কিউএ দলও খুশি। একটি জয়ের পরিস্থিতি :)


1

রিফ্যাক্টরিংয়ের মূল বিষয় হ'ল ভবিষ্যতে জিনিসগুলি সহজ করে তোলা। আপনি যদি একাধিক দীর্ঘমেয়াদী প্রকল্পের সাথে কিছু না কিছু এবং ধ্রুবক রিফ্যাক্টরিং ছাড়াই তুলনা করেন তবে আপনি রিফ্যাক্টরিংয়ের লাভটি প্রদর্শন করতে পারবেন না। এটি সাধারণত বিকাশকারীদের জুড়েই গৃহীত হয়, যে রিফ্যাক্টরিং রক্ষণাবেক্ষণ এবং পরিবর্তনের বাস্তবায়নের ব্যয় হ্রাস পায়, তবে ব্যবসায়ের দিক থেকে প্রমাণ করা শক্ত। রিফ্যাক্টরিং বাস্তবায়নের মূল কারণটি হ'ল প্রযুক্তিগত reduceণ হ্রাস করা ।

এছাড়াও, রিফ্যাক্টরিং একটানা প্রক্রিয়া হওয়া উচিত এবং রিফ্যাক্টরিংয়ে ব্যয় করা সময়কে বিকাশের কাজে নিজেই অন্তর্ভুক্ত করা উচিত। বিশেষ "রিফ্যাক্টরিং টাস্ক" রাখা ভাল ধারণা নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.