একটি বড় ফাইল রিফ্যাক্টরিং হ্যান্ডেল করার সর্বোত্তম উপায় কী?


41

আমি বর্তমানে একটি বড় প্রকল্পে কাজ করছি যা দুর্ভাগ্যক্রমে এমন কিছু ফাইল রয়েছে যেখানে সফ্টওয়্যার মানের নির্দেশিকা যেখানে সর্বদা অনুসরণ করা হয় না। এর মধ্যে বড় ফাইল (2000-4000 লাইন পড়ুন) অন্তর্ভুক্ত রয়েছে যা পরিষ্কারভাবে একাধিক স্বতন্ত্র কার্যকারিতা ধারণ করে।

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

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

সুতরাং রিফ্যাক্টর করার কোনও উপায় আছে, অন্য কারও কাজ করা বন্ধ করার প্রয়োজন নেই (দীর্ঘকাল ধরে) বা তাদের বৈশিষ্ট্যগুলি শাখাগুলি বিকাশের জন্য আবার মার্জ করা উচিত নয়?


6
আমি মনে করি এটি ব্যবহৃত প্রোগ্রামিং ভাষার উপরও নির্ভর করে।
রবার্ট আন্দ্রেজুক

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

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

1
আপনি এটির সাথে নিতে পারেন এমন অনেকগুলি পন্থা রয়েছে এবং সর্বোত্তম পন্থা আপনার পরিস্থিতির উপর নির্ভর করবে।
স্টিফেন

3
আমি এই প্রকল্পে যোগ দিয়েছি যেখানে সবচেয়ে বড় ফাইলটি 10 ​​কে লাইন দীর্ঘ এবং অন্যদের মধ্যে একটি শ্রেণি থাকে যা নিজেই 6k লাইন লম্বা হয় এবং প্রত্যেকে এটি স্পর্শ করতে ভয় পায়। আমি বলতে চাইছি আপনার প্রশ্নটি দুর্দান্ত your এমনকি আমরা একটি রসিকতা আবিষ্কার করেছিলাম যে এই একক শ্রেণিটি আমাদের মাউসের স্ক্রোল হুইলটি আনলক করার জন্য একটি ভাল কারণ।
এলমোভ্যানকিয়েলমো

উত্তর:


41

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

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

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

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

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

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

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

তবে শেষ পর্যন্ত, যে কোনও সমাধানের জন্য আপনাকে আপনার দলের সাথে সমন্বয় করতে হবে।


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

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

1
@ লাইভ আমার অভিজ্ঞতায় দলটির সাথে আগে থেকেই পোস্ট-রিফ্যাক্টরিং ডিজাইন নিয়ে আলোচনা করা বোধগম্য, তবে কোনও একক ব্যক্তি কোডটিতে পরিবর্তন আনলে এটি সাধারণত সহজ। অন্যথায়, আপনি স্টাফগুলি মার্জ করতে হবে এমন সমস্যায় ফিরে এসেছেন। অনেক ভালো 4K লাইন শব্দ, কিন্তু এটা সত্যিই না লক্ষ্যবস্তু মত refactorings নির্যাস ক্লাসের । (আমি একটা কঠিন এখানে মার্টিন জালিয়া এর refactoring বই শিল চান তাহলে আমি এটা পড়া ছিল।) কিন্তু 4K লাইন হয় শুধুমাত্র জন্য অনেক লক্ষ্যহীন মত "দেখি আমি এই উন্নত করতে পারেন কিভাবে যাক" refactorings।
আমন

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

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

30

ছোট পদক্ষেপে রিফ্যাক্টরিং করুন। ধরা যাক আপনার বড় ফাইলটির নাম রয়েছে Foo:

  1. একটি নতুন ফাঁকা ফাইল যুক্ত করুন Barএবং এটি "ট্রাঙ্ক" এ প্রতিশ্রুতিবদ্ধ করুন।

  2. কোডটির একটি ছোট অংশ সন্ধান করুন Fooযাতে এতে স্থানান্তরিত হতে পারে Bar। পদক্ষেপটি প্রয়োগ করুন, ট্রাঙ্ক থেকে আপডেট করুন, কোডটি তৈরি করুন এবং পরীক্ষা করুন এবং "ট্রাঙ্ক" এ প্রতিশ্রুতিবদ্ধ করুন।

  3. পদক্ষেপ 2 পুনরাবৃত্তি করুন Fooএবং Barসমান আকার পর্যন্ত (বা আপনি যে আকারের পছন্দ)

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

এটি মার্জ সংঘাত বা তাদের ম্যানুয়ালি সমাধানের প্রয়োজনীয়তা দূর করবে না, তবে এটি প্রতিটি সংঘাতকে কোডের একটি ছোট্ট অঞ্চলে সীমাবদ্ধ করে, যা আরও বেশি পরিচালনাযোগ্য।

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


2
এটি গিটস rerereবিকল্পটি সক্ষম করার সাথে বিশেষত কার্যকর
ডি বেন নোবল

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

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

18

আপনি পারমাণবিক ক্রিয়াকলাপ হিসাবে ফাইলটি বিভক্ত করার কথা ভাবছেন, তবে মধ্যবর্তী পরিবর্তনগুলি আপনি করতে পারেন। ফাইল ধীরে ধীরে সময়ের সাথে বিশাল আকার ধারণ করেছে, সময়ের সাথে সাথে এটি ধীরে ধীরে ছোট হতে পারে।

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

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

ধারণাটি হ'ল ধীরে ধীরে আপনার লক্ষ্যের দিকে এগিয়ে যাওয়া। এটি অনুভূতিটি ধীরগতির মতো অনুভব করবে তবে হঠাৎ আপনি বুঝতে পারবেন আপনার কোডটি আরও ভাল better সাগরের লাইনার ঘুরিয়ে আনতে এটি অনেক দিন সময় নেয়।


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

9

আমি এই সমস্যার স্বাভাবিক সমাধানের চেয়ে আলাদা পরামর্শ দিতে যাচ্ছি।

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

আপনি এটির জন্য একটি নির্দিষ্ট সময় নির্ধারণ করতে চাইতে পারেন, যাতে এটি শেষ না হয়ে সপ্তাহের জন্য মূল্যবান যুক্তিযুক্ত হয় with পরিবর্তে, এটি এমনকি সাপ্তাহিক 1-2 ঘন্টা ইভেন্ট হতে পারে যতক্ষণ না আপনি সমস্ত জিনিসগুলি এটির কীভাবে হওয়া দরকার তা খুঁজে পান। ফাইলটি রিফ্যাক্টর করতে আপনার কেবল 1-2 ঘন্টা প্রয়োজন। আপনি চেষ্টা না করা পর্যন্ত জানেন না, সম্ভবত।

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

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

এটি সমস্ত পরিস্থিতিতে, দল বা সংস্থাগুলিতে কাজ করতে পারে না কারণ কাজটি এমনভাবে বিতরণ করা হয় না যা এটি সহজে ঘটে happen এটি (ভুলভাবে) ডে-টাইমের অপব্যবহার হিসাবেও গণ্য হতে পারে। এই গ্রুপ কোডটি ম্যানেজারের সাথে সাথে রিফ্যাক্টর থেকেই কিনে নেওয়া দরকার।

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

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

তবে আপনি আপনার চুল্লী করার সিদ্ধান্ত নিয়েছেন, সৌভাগ্য!


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

কোড জনগণের পরামর্শের জন্য +1
জন রেয়নর

1
এটি হুবহু সমস্যার সামাজিক দিকটি সম্বোধন করে।
চককট্রিল

4

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

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

এ জাতীয় বৃহত ফাইলগুলি রিফ্যাকচার করার কারণে অপ্রত্যাশিত সমস্যা দেখা দেয় causes প্রথম পদক্ষেপ হ'ল বড় ফাইলগুলিকে বর্তমানে মাস্টার বা বিকাশ শাখাগুলিতে অতিরিক্ত কার্যকারিতা জমা করা থেকে বিরত রাখা ।

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

কমিট হুক নতুন ক্লাসের জন্য পরীক্ষা করতে পারে বা অন্যান্য স্থিতিশীল বিশ্লেষণ করতে পারে (অ্যাডহক বা না)। আপনি বর্তমানে কেবল একটি লাইন বা চরিত্রের গণনা বেছে নিতে পারেন যা বর্তমানে ফাইলের চেয়ে 10% বড় এবং এটি বলতে যে বড় ফাইলটি নতুন সীমা ছাড়িয়ে যেতে পারে না। আপনি স্বতন্ত্র কমিটগুলিও প্রত্যাখ্যান করতে পারেন যা বড় ফাইলটিকে অনেকগুলি লাইন বা অনেকগুলি অক্ষর বা ডাব্লু / ই দিয়ে বড় করে grow

একবার বড় ফাইলটি নতুন কার্যকারিতা জমে যাওয়া বন্ধ করে দিলে, আপনি একবারে এটির বাইরে জিনিসগুলি রিফ্যাক্টর করতে পারেন (এবং এটি আবার বাড়তে রোধ করতে একই সাথে কমিট হুক দ্বারা প্রয়োগ করা ট্রেসহোল্ডগুলি হ্রাস করতে পারেন)।

অবশেষে, বড় ফাইলগুলি যথেষ্ট ছোট হবে যে কমিট হুকগুলি সম্পূর্ণরূপে মুছে ফেলা যায়।


-3

হোমটাইম পর্যন্ত অপেক্ষা করুন। ফাইলটি বিভক্ত করুন, প্রতিশ্রুতিবদ্ধ এবং মাস্টারটিতে মার্জ করুন।

অন্যান্য ব্যক্তিকে অন্য কোনও পরিবর্তনের মতো সকালে তাদের বৈশিষ্ট্য শাখাগুলিতে পরিবর্তনগুলি টানতে হবে।


3
তারপরেও তাদের অর্থ হ'ল তারা আমার রিফ্যাক্টরিংগুলিকে তাদের পরিবর্তনের সাথে একীভূত করতে হবে যদিও ...
হফ


1
ঠিক আছে, যদি তারা সকলেই এই ফাইলগুলি পরিবর্তন করে তবে তাদের প্রকৃতপক্ষে মার্জগুলির সাথে মোকাবিলা করতে হবে।
লাইভ

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

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