আমি কীভাবে রিফ্যাক্টরিং পরিচালনা করব যা এক স্প্রিন্টের চেয়ে বেশি সময় নেয়?


49

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

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

আমরা একটি স্প্রিন্ট বন্ধ বা প্রসারিত করতে পারি না কারণ আমাদের মাসিক হটফিক্স রয়েছে। সুতরাং একটি স্প্রিন্টের অতীত প্রসারিত এই পরিবর্তনটি হটফিক্সে যুক্ত হওয়া অন্য কাজ থামাতে পারে না।

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

উত্তর:

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


23
পার্শ্ব নোট হিসাবে, এটি সংজ্ঞা অনুযায়ী বৃহত আকারের পুনরায় নকশা করা, রিফ্যাক্টরিং নয় । আশা করি আপনি এটিকে নিটপিকিং হিসাবে গ্রহণ করবেন না - আইএমএইচও যোগাযোগের সমস্যা এড়াতে পরিষ্কার পরিভাষা ব্যবহার করা গুরুত্বপূর্ণ :-)
পিটার তারেক

9
@ চার্লস, "রিফ্যাক্টরিং সাধারণত ছোট পদক্ষেপে সম্পন্ন করা হয়। প্রতিটি ছোট পদক্ষেপের পরে, আপনি একটি কার্যনির্বাহী ব্যবস্থা রেখে চলেছেন যা কার্যকরীভাবে অপরিবর্তিত রয়েছে। " আমি উপরে উল্লিখিত পৃষ্ঠাটি থেকে উদ্ধৃত।
পিয়েটার তারেক

2
@ চারেলস: সিস্টেমকে কাজ করে চলাকালীন সবসময় রিফ্যাক্টরিং বাড়ানো যায়। ক্লাস / প্যাকেজ / মডিউলটি রিফ্যাক্টর করা হচ্ছে তার শীর্ষে একটি বড় "রিফ্যাক্টরিং প্রগতিতে চলছে" মন্তব্য করুন এবং অংশগুলি একবারে করুন। যদি আপনি বস্তু মডেলটি স্থানান্তরিত হওয়ার সময় একটি অন্তর্বর্তীকালীন রিলিজ কাটা করেন তবে তা ঠিক।
শান ম্যাকমিলান

7
আপনি যদি এত বড় পদক্ষেপ নিচ্ছেন যে আপনার নিয়মিত ভিত্তিতে কোডের একটি কার্যকরী অংশ থাকতে না পারে তবে রিফ্যাক্টরিং পুনরায় ডিজাইনের হয়ে ওঠার এটিই খুব সংজ্ঞা। আপনার এই শব্দটির অপব্যবহারের জন্য আপনাকে ডেকে বলার জন্য দয়া করে লোকেদের উপর রাগ করবেন না। পুনরায় ডিজাইনের বিষয়ে জিজ্ঞাসা করে কোনও ভুল নেই। মন্তব্যকারীরা কেবল ইঙ্গিত করার চেষ্টা করছে যে আপনি যে উত্তর চান তা পাবেন না কারণ আপনি এই শব্দটির অপব্যবহার করছেন যা ইতিমধ্যে ঘটেছে।
jprete

5
আমি জানি এটি একটি সামান্য বিষয়, তবে আপনি কী কী পরিস্থিতিতে ছোট পদক্ষেপগুলিতে রিফ্যাক্টরিংকে অসম্ভব করে তোলে তা সম্পর্কে আমাকে কৌতূহলী করে তুলেছিলেন। এটি সম্পর্কে আরও কিছু পটভূমি ভাগ করুন।
বুহব

উত্তর:


14

আপনার যদি রিফ্যাক্টরিং বিলম্বিত করার বিলাসিতা থাকে তবে আমি ইউনিট পরীক্ষা এবং স্বয়ংক্রিয় ইন্টিগ্রেশন পরীক্ষা যুক্ত করার ক্ষেত্রে আগত পুনরাবৃত্তিগুলিকে ফোকাস করার পরামর্শ দিচ্ছি যেখানে আপনি আরামদায়কভাবে কোডবেসটিকে রিফেক্টর করতে পারবেন এবং তারপরে একটি একক স্প্রিন্টে রিফ্যাক্টর।


68

আমার পরামর্শ:

  1. একটি শাখা তৈরি করুন
  2. ট্রাঙ্ক থেকে আপনার শাখায় প্রতিদিন মার্জ করুন এবং বিরোধগুলি সমাধান করুন।
  3. এটি শেষ না হওয়া পর্যন্ত কাজ করুন। আপনার শাখাটি বেশ কয়েকটি স্প্রিন্টের জন্য মূল বিকাশের বাইরে থাকতে পারে।
  4. ট্রাঙ্কে ফিরে মার্জ করুন।

এটি সম্ভবত কুৎসিত হবে এমন সত্যিকারের কাছাকাছি কিছু নেই। আমি তোমাকে হিংসা করি না আমার অভিজ্ঞতায়, আপনি যখন কোনও প্রকল্পকে মারাত্মকভাবে পরিবর্তন করেন, চলমান বিকাশকে নতুন দৃষ্টান্তের সাথে একত্রে তৈরি করা বনাম বনাম কোনওভাবে সবকিছু শেষ হয়ে যাওয়ার পরে নতুন পরিবর্তনের ট্রাঙ্কে মার্জ করা সহজ। তবুও, এটি আঘাত করতে চলেছে।


1
আমরা এই পদ্ধতির ব্যবহার করে আলোচনা করেছি এবং এটি মোকাবিলার আগে যদি অন্য কোনও ধারণা না আসে তবে আমরা যা করার পরিকল্পনা করি এটি এটি।
চার্লস ল্যামবার্ট

3
আমি আশঙ্কা করছি যে আপনি যদি এইরকম নিখুঁত রিফ্যাক্টরিং করতে চান তবে আপনার ট্রাঙ্ক এবং শাখার মধ্যে প্রচুর ওভারহেড একসাথে এবং পিছনে মার্জ হবে।
জর্জিও

বেশিরভাগ ক্ষেত্রে (আশাকরি) এই মার্জ করা পরিবর্তনগুলি এখানে প্রশ্নযুক্ত কোডকে প্রভাবিত করবে না। এই পরিবর্তনের সময়সীমাটি যদি কোনও নির্ভরযোগ্য ফলাফল নিশ্চিত করে তবে আমি আপত্তি করব না।
চার্লস ল্যামবার্ট

1
আপনার উপস্থাপনাটি অস্থিরতার কথা বিবেচনা করে মনে হচ্ছে, সম্ভবত আপনার গিটকে বিবেচনা করা উচিত , কারণ এটি এই ধরণের অনুমানমূলক শাখা এবং মার্জিংকে সহজতর করে।
জন টোবলার

1
@ জর্জিও: আমিও কি তাই, প্রতিদিনের সংশ্লেষকে কিছুটা বিড়ম্বনা মনে হয় তবে তা সত্যিই দলের আকারের উপর নির্ভর করে। যত বেশি লোক, তত পরিবর্তন এবং আরও ঘন ঘন আপনার একত্রিত হওয়া উচিত। আপনার কাজের সময় চাইলে দৈনিক নীচের সীমাটি মনে হয়।
ম্যাথিউ এম।

40

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


3
আপনার উত্তরটি বিষয়টিতে খুব ভাল তথ্য। আপনারা যেমন বলছেন তেমনই "চালিয়ে যাও এবং করতে" আমি এখানে আছি। আমি কিছু তথ্য পাওয়ার আশায় প্রশ্নটি জিজ্ঞাসা করেছি যাতে আমি আমার বিদ্যমানটির সাথে সমান্তরালভাবে চলার প্রক্রিয়াটি নিয়ে আসতে পারি বা আমার বর্তমান পরিস্থিতি সমাধানের জন্য বর্তমান প্রক্রিয়াটি কোনওরকম পরিবর্তন করতে পারি। আমার বিকাশকারীদের বলার মতো কিছু দরকার যাতে তাদের মধ্যে কাজ করার জন্য নির্দেশিকা থাকে কারণ এটি কমপক্ষে আরও 2 বার ঘটবে।
চার্লস ল্যামবার্ট

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

32

কেবল একটি 3, 4 বা 5 সপ্তাহের স্প্রিন্ট করুন। কে পাত্তা দেয়? আপনি স্পষ্টতই নিশ্চিত যে সংক্ষিপ্ত সময়সীমে কিছুই করা যায় না, সুতরাং এটির লড়াই বন্ধ করুন।

দ্য রয়েল সোসাইটি অফ ব্লাইন্ড অ্যাগিল অ্যাডেরেন্সে কেবল আপনার অনুগামীদের বলবেন না।


মনে হচ্ছে সাংগঠনিক কারণে (মাসিক হটফিক্স), 2 সপ্তাহের স্প্রিন্ট পরিবর্তন করা বেশ শক্ত are
স্টিভ বেনেট

10

মাইকেল ফেদারস দ্বারা লিগ্যাসি কোড সহ কার্যকরীভাবে কাজ করা বইটি শুরু করার সুপারিশ করছি । রিফ্যাক্টরিং-স্টাইল পরিবর্তনের সুযোগ কমাতে তিনি বিভিন্ন কৌশল অবলম্বন করেন।


নিশ্চিত করার জন্য একটি ভাল বই, তবে আমি মনে করি না এটি একাধিক স্প্রিন্টের উপর বিভক্ত রিফ্যাক্টরিংকে কভার করে।
আদম লিয়ার

4
আমি এটিকে একটি +1 দিতে যাচ্ছি কারণ শিরোনামটি যেমনটি লেগ্যাসি কোড দিয়ে কার্যকরভাবে কাজ করবে আপনি এটি শিখতে শুরু করার সাথে এটি শুরু করা সম্ভবত সেরা বই। এটি এমন কারও পক্ষে প্রাসঙ্গিক যারা এই প্রশ্নটি জিজ্ঞাসা করতে পারেন এবং জিনিসগুলি ছোট পদক্ষেপে ভাঙার সাথে কী জড়িত তা বুঝতে পারেন না।
চার্লস ল্যামবার্ট

@ আন্না - তারপরে আপনি পঞ্চম অধ্যায়টি পড়তে চান (যা) ছোট পরিবর্তনগুলি রোধ করে এমন ধরণের দম্পতি ভাঙার কৌশল সম্পর্কে কথা বলছে about
কেডগ্রিগরি

@ কেডিগ্রিগরি মেলা যথেষ্ট। :) আরও উত্তম করে তুলতে আপনার উত্তরে এটিকে যুক্ত করবেন?
অ্যাডাম শিখুন

7

আমাদের দোকানে, যখন আমাদের বড় রিফ্যাক্টরিং বা পুনর্লিখনের কাজগুলি থাকে যা একটি রিলিজ উইন্ডোতে শেষ করা যায় না, আমরা সিস্টেমে যেমন কার্যকারিতা রেখে দিই। তবে, আমরা সময়ের অনুমতি অনুসারে নতুন, রিফ্যাক্টর লেগো-ব্লক ফাংশনগুলি শুরু করি। অবশেষে, আমরা এমন একটি জায়গায় পৌঁছে যাই যেখানে আমাদের পর্যাপ্ত লেগো-ব্লক হয়ে গেছে, একটি স্প্রিন্ট লেগো ব্লকগুলিকে অ্যাপ্লিকেশনটিতে প্লাগ করতে এবং এটি ব্যবহারকারীদের জন্য চালু করার জন্য পর্যাপ্ত সময় সরবরাহ করে।

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


এটি একটি ভাল ধারণা, তবে এটি কার্যকর করার জন্য উচ্চ স্তরের যোগাযোগের প্রয়োজন হবে। উদাহরণস্বরূপ, যখন আমি কোডিং করছি, আমি যদি এমন কোনও পদ্ধতি সনাক্ত করি যা কোথাও ব্যবহার করা হচ্ছে না, এবং এটি সর্বজনীন নয়, আমি এটিকে সরিয়ে দেব।
চার্লস ল্যামবার্ট

5

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


আমরা ইতিমধ্যে এই সমস্ত কাজ করেছি। এ কারণেই আমি স্পষ্টভাবে প্রকাশ করেছিলাম যে এটি ভেঙে ফেলা যায় না।
চার্লস ল্যামবার্ট

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

1
আমি বললাম বাছাই কিছুই। আমি বলছিলাম যে আমরা আপনার বর্ণনার অনুরূপ একটি প্রক্রিয়াটি পেরিয়েছি এবং অন্য প্রান্তে এমন কিছু কোড নিয়ে বেরিয়ে এসেছি যা একক স্প্রিন্টে রিফেক্টর করা যায় না।
চার্লস ল্যাম্বার্ট

আমি বলেছিলাম: "কোডটি সঠিকভাবে মিড-রেফ্যাক্টরকে কীভাবে কার্যকর রাখতে হবে তা নির্ধারণের জন্য একটি স্প্রিন্ট উত্সর্গ করুন" " আপনি বলেছিলেন, "আমরা ইতিমধ্যে এই সমস্ত কাজ করে ফেলেছি।" আপনি এখন অন্যথায় বলছেন? যদি এই বিতর্কিত মনে হয় তবে আমি বুঝতে পারছি না।
কার্ল ম্যানাস্টার

5

কর্বিন মার্চের উত্তরে +1, আমি যা ভাবছিলাম ঠিক তা-ই। দেখে মনে হচ্ছে আপনার কোড-বেসটি কিছুটা কুৎসিত এবং এটি পরিষ্কার করার জন্য এটি একটি একক স্প্রিন্ট চক্রের চেয়ে বেশি গ্রহণ করতে চলেছে।
ঠিক যেমন কর্বিন বলেছিল,

  1. এটিকে একটি "রিফ্যাক্টরিং প্রকল্প" হিসাবে বিভক্ত করুন
  2. আপনার শাখা পরিবর্তন পরীক্ষা করুন
  3. QA পরীক্ষার জন্য আপনার পরীক্ষার পরিবেশে প্রচার করুন
  4. রিফ্যাক্টরিং সম্পন্ন না হওয়া পর্যন্ত ক্রমান্বয়ে এটিকে ট্রাঙ্কের মধ্যে আবার মার্জ করুন।

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


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

4

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

নির্ভরতা অপসারণের পরে, আপনি স্প্রিন্টের মধ্যে প্রাপ্য হওয়ার জন্য অবশিষ্ট রিফ্যাক্টরিংয়ের কাজগুলি ভেঙে ফেলতে সক্ষম হবেন।


3

এই মুহুর্তে আমি যে প্রকল্পের জন্য কাজ করছি তাতে আমরা 4-সপ্তাহের স্প্রিন্ট ব্যবহার করছি। এবং কখনও কখনও আমরা ব্যবহারকারীর গল্প শেষ করতে পারি না এবং নিম্নলিখিত স্প্রিন্টের সময় আমরা এটি পুনরায় চালু করি।

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


একটি 4 সপ্তাহের স্প্রিন্ট এটি আবরণ করা উচিত। তবে আমরা অন্যান্য বাগ ফিক্স ইত্যাদির কারণে বর্তমান 2 সপ্তাহের স্প্রিন্টগুলি থামাতে পারি না তাই এটি একাধিক স্প্রিন্টের মাধ্যমে প্রসারিত করতে হবে। এইভাবে আমার সমস্যার কর্কট।
চার্লস ল্যামবার্ট

যেমনটি আমি বলেছি, আমরা 4 সপ্তাহের স্প্রিন্ট ব্যবহার করছি এবং, যদি 4 সপ্তাহের মধ্যে কোনও গল্প শেষ না হয়, আমরা কেবল এটি পরবর্তী স্প্রিন্টের জন্য নির্ধারিত করব। আপনার কি কমপক্ষে 2-সপ্তাহের স্প্রিন্টের শেষে সিস্টেমটি সুসংগত অবস্থায় থাকতে পারে (এবং তারপরে নিম্নলিখিত স্প্রিন্ট চলাকালীন চালিয়ে যেতে পারেন)?
জর্জিও

নেই একটি যাচাইযোগ্য সামঞ্জস্যপূর্ণ রাষ্ট্র।
চার্লস ল্যামবার্ট

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

2

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

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


আমরা এটিকে চিরতরে বন্ধ করতে পারি না, এবং আপনার উত্তর কীভাবে রিফ্যাক্টরিং সম্পাদন করবেন তা সম্বোধন করে না।
চার্লস ল্যামবার্ট

@ চার্লস: ' আরেকবারের জন্য অপেক্ষা করতে হবে।' ;) আমি প্রকল্পটি বাতিল বলিনি cancel
IAbstract

2

আমাদের কোডবেসের একটি অংশ (যা কিছুটা আরও বড়) এর সাথে সম্প্রতি একই সমস্যাটি পেরিয়ে যাওয়ার পরে আমি আশা করি যে আমি আপনার সাথে কয়েকটি অন্তর্দৃষ্টি ভাগ করে নিতে পারি। আমার পরিস্থিতিতে কোডবেস অন্য একটি দল বিকাশ করেছিল, তাই মূল বিকাশকারীদের কেউই এই রিফ্যাক্টরিংয়ের সাথে জড়িত ছিল না। কোডবেসের সাথে আমার অভিজ্ঞতাটি প্রায় 1 বছর ছিল এবং অন্য বিকাশকারী এটির কাজটি 2 বছর সেরেছিলেন।

অন্যান্য উত্তরগুলি সম্পর্কে আমাকে দুটি ছোট নোটকে এখানে অনুমতি দিন:

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

আপাতদৃষ্টিতে দুই সপ্তাহ বা তারও বেশি সময় ধরে "অফ-রিজার্ভেশন" এড়িয়ে যাওয়া নজরে পড়বে না। আপনাকে প্রকল্প পরিচালনা এবং আরও গুরুত্বপূর্ণ বিষয় টিম দ্বারা সমর্থনপ্রাপ্ত তা নিশ্চিত করতে হবে। দলটি যদি এই রিফ্যাক্টরিংয়ের জন্য প্রতিশ্রুতিবদ্ধ না হয় (এবং এর অর্থ এখনই এটি করুন, সুদূর ভবিষ্যতে নয়) তবে আপনি সমস্যার মধ্যে পড়বেন।

এটি একা করবেন না, জুড়ি প্রোগ্রামিং ব্যবহার করুন। এর কঠোরতার অর্থ এই নয় যে আপনাকে সারাক্ষণ একই কীবোর্ডের সামনে বসতে হবে, তবে ছোট এবং সরু কাজগুলি (যেমন এই শ্রেণীর আচরণকে ধরে রাখে এমন পরীক্ষাগুলি লিখুন) স্বতন্ত্রভাবে পরিচালনা করতে পারেন।

একটি স্ক্র্যাচ রিফ্যাক্টরিং করুন এবং এটির মতো আচরণ করুন। (এক ধরণের "থ্রো-অ্যাওল" প্রোটোটাইপ রিফ্যাক্টরিং, "থ্রো-অ্যাও" বিটটি গুরুত্বপূর্ণ!) সত্যিই, আপনার রিফ্যাক্টরিংয়ের যে সমস্ত প্রভাব রয়েছে তা আপনি জানেন না। একটি স্ক্র্যাচ রিফ্যাক্টরিং আপনাকে নির্দিষ্ট কিছু ক্ষেত্রে সহায়তা করবে:

  • আপনি যে সিস্টেমের টুকরো টিকে ছিলেন তা আপনি আবিষ্কার করতে পারবেন knew
  • মডিউলগুলি কীভাবে আন্তঃসংযোগ স্থাপন করবে সে সম্পর্কে আপনার আরও ভাল ভিউ হবে
  • আপনি আপনার সিস্টেমকে মডিউলগুলিতে গোষ্ঠীকরণের একটি নতুন উপায় আবিষ্কার করবেন, সম্ভবত আপনার বর্তমান বোঝার চেয়ে অনেক বেশি আলাদা। আপনার সঙ্গীর সাথে অন্তর্দৃষ্টি সম্পর্কে আলোচনা করুন। আপনার নতুন দর্শনটি ছড়িয়ে দেওয়ার চেষ্টা করুন। একটি সংক্ষিপ্ত আর্কিটেকচার হুইটপেপার লিখুন (বা একটি চিত্র আঁকুন) যা বলছে যে জিনিসগুলি বর্তমানে কোথায় রয়েছে এবং যেখানে তাদের যুক্তিযুক্ত থাকতে হবে।

আপনি যখন আপনার স্ক্র্যাচ রিফ্যাক্টরিংটি করেন, আমি আশা করি আপনি আবিষ্কার করবেন যে আপনি কেবল যান এবং সমস্ত কিছু পরিবর্তন করতে পারবেন না। আপনার খারাপ লাগবে, এটি কেবল একটি বড় ফ্যাট গন্ডগোল এবং আপনি কেবল একটি স্যুইচ ফ্লিপ করে এটিকে কাজ করতে পারবেন না। আমার ক্ষেত্রে এটিই ঘটেছে, আপনার পরিস্থিতিতে এটি ভিন্ন হতে পারে।

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

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


1

একটি রক্ষণাবেক্ষণ উইন্ডো শুরু করুন যার সময়ে আর কোনও উন্নয়ন করা হয় না। পুনরায় নকশা সম্পাদন করুন, তারপরে বিকাশের স্প্রিন্টগুলি আবার শুরু করুন।


0

আমাদের হাতে দুটি ধরণের কাজ রয়েছে:

  1. মানুষের ঘন্টা কাজ করে
  2. জিনিয়াস কাজ করে

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


0

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

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

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

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