প্রতিদিন কোডে প্রতিবেদন করা / চেক করা কি ভাল অভ্যাস?


63

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

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

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

প্রশ্ন: প্রতিদিন কি এমন একটি ভাল অনুশীলন করা হচ্ছে যে আমার কাজের প্রবাহটি এটির জন্য পরিবর্তন করা উচিত, বা এটি পরামর্শ দেওয়া ঠিক নয়?

সম্পাদনা: আমার ধারণা, আমার স্পষ্ট করে বলা উচিত ছিল যে আমি এর সিভিএস অর্থ "ওরফে" ধাক্কা "বোঝাতে চেয়েছিলাম কারণ ফওলার 2006 সালে এটি লেখার সময় সম্ভবত এটিই বোঝাতে চেয়েছিলেন।

^ অর্ডারটি আরও নির্বিচারে এবং কাজের উপর নির্ভর করে, আমার বক্তব্যটি ছিল সময়কাল এবং ক্রিয়াকলাপগুলি বর্ণনা করার জন্য, সঠিক ক্রমটি নয়।


20
আপনি যদি আপনার কোডটি কমপ্লিট করে কিছু কার্যকর যুক্তি সম্পাদন করেন তবে আপনি এটি প্রতিশ্রুতিবদ্ধ হতে পারেন। আপনি যদি টিমের পরিবেশে কাজ করছেন তবে সংক্ষিপ্ত চক্রের কোড করা আরও ভাল।
EL ইউসুবোভ

4
মার্টিন ফোলার কি কোনও ভিসিএস ধরে নিচ্ছেন যা বিতরণ করা হয়নি?
ব্যবহারকারী16764

4
এই নিবন্ধটির তারিখটি নোট করুন: 1 ম মে, 2006. গিট এবং মার্কুরিয়াল এমনকি এপ্রিল 2005 পর্যন্ত শুরু করা হয়নি, এবং আমার ধারণাটি হ'ল তারা প্রায় ২০০৮ সালে সত্যই ট্রেশন পাওয়া শুরু করেছিল F ফাউলারের সাইটে আমি কোনও নিবন্ধ খুঁজে পাই না যা উল্লেখ করা হয়েছে ২০০৯-এর পূর্বে যেকোন একটিতে to পরামর্শটি ডিভিসিএস ব্যবহারকারী দলগুলিতে প্রযোজ্য নয়।
কিরেলেসা

2
@ কিরলেসা: নিবন্ধটি এমনকি বলেছে যে "সাবভার্সনটি আধুনিক [সংস্করণ নিয়ন্ত্রণ ব্যবস্থা]"।
চে

4
প্রথমে কোড আর তারপরে টেস্ট?

উত্তর:


43

আমি এই নিয়মের সাথে একমত নই এবং ম্যাসন হুইলার যা বলেছিল তার সাথে আমি একমত । আমি কয়েকটি ধারণা যুক্ত করতে চাই।

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

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

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

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

শুধু আমার 2 সেন্ট।

সম্পাদনা

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


23
'কমিট' কোনও 'প্রকাশ' নয়। 'কমিট' এর অর্থ 'স্ন্যাপশট'; 'প্রকাশ' কে স্কেম-লিঙ্গোতে 'পুশ' বলা হয়। অবশ্যই, এসভিএন কেবলমাত্র উভয় ধারণাকে একের সাথে একীভূত করেছে, অনেকগুলি বুদ্ধিমান ওয়ার্কফ্লো অসম্ভব করে তুলেছে, তবে এটি সরঞ্জামটির একটি সীমাবদ্ধতা, সাধারণভাবে উত্স নিয়ন্ত্রণের কর্মপ্রবাহের নয়।
tmadmers

3
Revision control and data backup are two different thingsহ্যাঁ, আমি অবশ্যই এইভাবে অনুভব করি।
টানা স্লেজগাড়ির

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

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

@tdammers: স্থানীয় প্রতিশ্রুতিবদ্ধ এবং প্রকাশের মধ্যে একটি স্পষ্ট পার্থক্য একটি পদক্ষেপ হতে হবে। এসভিএন-তে আমি তার জন্য পৃথক শাখা ব্যবহার করতে পারি। তবে আবারও, আমি ভাবছি কেন আমি এমন কোনও সংশোধনটির ট্র্যাক রাখতে চাই যা আমার কাছে খুব একটা বোঝায় না? আমি নিশ্চিত নই যে আমি একটি নতুন সংশোধন (এমনকি একটি প্রাইভেটও) চাই কারণ এটি 5 o হে ক্লক এবং আমি ঘরে যাচ্ছি। পরিবর্তে আমি ব্যাকআপ রাখতে পছন্দ করি।
জর্জিও

107

আমি দিনের বেশ কয়েকবার কোড কমিট করি । যখনই আমি এমন একটি পয়েন্টে পৌঁছলাম যেখানে কোডটি সংকলনের জন্য পর্যাপ্ত পরিমাণে পূর্ণ এবং অন্য জিনিসগুলি না ভেঙে, এটি ভিতরে যায়।

আপনার কাজটি ভাঙ্গার দিকে নজর দেওয়া উচিত যাতে আপনি দিনে কয়েকবার নিরাপদে চেক ইন করতে পারেন

এর যৌক্তিকতা দুটি:

  1. যে কোনও কাজ যাচাই করা হয়নি তা হারিয়ে যেতে পারে - আপনার কম্পিউটারে বিপর্যয়কর ব্যর্থতা হতে পারে। এই ক্ষেত্রে, আপনি যত বেশি সময় অপেক্ষা করবেন, তত বেশি কাজ আপনি হারাবেন।
  2. আপনি চেক ইন না করে যত বেশি কাজ করেন, শেষ পর্যন্ত আপনি যখন সিদ্ধান্ত নেবেন যে সিদ্ধান্ত নেওয়ার সময় অন্যদের আরও সংহত করার দরকার হয়। এটি দ্বন্দ্ব এবং মার্জ ইস্যুগুলির আরও সম্ভাবনার পরিচয় দেয়।

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

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

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

3
@ আর্টবি - যদি নিজের মতো এমন কেউ আছেন যে প্রতি 3 দিনের মধ্যে কেবল চেক করেন? নাকি সপ্তাহে একবার? আপনি অন্যকে সঠিক কাজ করার উপর নির্ভর করছেন।
ওবেদের

3
আমি যখন প্রশ্নটি পড়ি তখন আমার প্রতিক্রিয়াটি কি "জিজ্ঞাসার মতো যা প্রতি সপ্তাহে গোসল করা ভাল ধারণা"?
অ্যান্ড্রু গ্রিম

39

এর পিছনে কারণগুলি না বুঝে কোনও পদ্ধতি বা অনুশীলনের দিকে স্ল্যাশ করে মেনে চলা কখনই ভাল ধারণা নয়। কার্গো-কাল্ট প্রোগ্রামিং থেকে আসে।

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

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


1
তারপরে যদি এটি জটিল বৈশিষ্ট্য সংহতকরণ / বিকাশ হয় তবে এটি প্রতিশ্রুতিবদ্ধ না করা এখনও একটি বড় ক্ষতি, সম্ভবত ট্রাঙ্কের কাছে নয়, তবে কমপক্ষে এই বৈশিষ্ট্যের জন্য একটি শাখায়, সেই শাখাগুলির জন্যই এটি!
ভিনসেন্ট বি

2
'মূল্যবান চেক ইন' বলতে কী বোঝ? যদি এটি অন্য কারও কোডটি ভঙ্গ না করে তবে আপনি এটিকে চেক ইন করবেন না কেন?
কर्क ব্রডহર્স্ট

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

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

14

ওদেড যত তাড়াতাড়ি সম্ভব কোড করার জন্য দুটি গুরুত্বপূর্ণ কারণ দিয়েছেন। আমি আরও কিছু যুক্ত করব:

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

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


1
(আইএমও) সহ এই উত্তরটি কেন কেবলমাত্র সঠিক এবং সঠিক উত্তর (পয়েন্ট 2) এত কম রেট দেওয়া আছে ?! অবশ্যই এটি একটি শাখার পয়েন্ট! @ ম্যাসন হুইলারের: সুতরাং আপনি একবারে কমিট না করে কাঁচা কয়েক দিন কোডিং উপভোগ করছেন? তাহলে ভার্সন কন্ট্রোল সিস্টেম ব্যবহার করে কেন ?!
ভিনসেন্ট বি

2
এটা সঠিক উত্তর. যদি আপনার কাজটি ব্যবহারের যোগ্য হওয়ার আগে অনেক দিন কাজ হয় তবে শাখা করুন। অন্যথায় আপনি প্রতিশ্রুতিবদ্ধ যখনই এটি দলের সদস্যদের সর্বশেষতম সংস্করণ রয়েছে তা নিশ্চিত করার জন্য কাজ করে, তারা এটি পরীক্ষা করে দেখতে পারে যে এটি কার্যকর হয় এবং তারা ASAP হিসাবে যুক্ত / নিখোঁজ বৈশিষ্ট্যগুলি সনাক্ত করতে পারে।
কার্ক ব্রডহર્স্ট

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

8

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

  • তারা কি বিল্ডটি ভেঙে দেয়?
  • আপনি কি অন্য দলের সদস্যের প্রচেষ্টা নকল করছেন?
  • আপনি কিছু ভুল করছেন?
  • বা লোকেরা কি আপনার কাছ থেকে জিনিস নিয়ে অপেক্ষা করছে?

ছোট পরিবর্তনগুলি পরিচালনা করা অনেক সহজ।

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

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


5

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

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

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

এখন, কাজের এই উপায় সম্পর্কে ভাল কি?

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

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


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

@ জর্জিও, আমি তাতে আপনার সাথে একমত হই। এর পিছনে কেই থাকুক না কেন, কোনও পরামর্শকে নিরঙ্কুশ নিয়ম হিসাবে গ্রহণ করা উচিত নয়।
20:43 এ হ্যারেড

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

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

3

প্রতিদিন চেক করার জন্য যুক্তিগুলি:

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

প্রতিদিন চেকিংয়ের বিরুদ্ধে তর্কগুলি:

  • দরকার নেই বা চাইবে না
  • আমার কোডটি এখনও পরিষ্কার করা হয়নি, এটি গোলযোগ
  • সময় নেই

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

আমি এতে ভুল হতে চাই তাই দয়া করে আমাকে প্রতিদিনের চেক-ইন-এর বিরুদ্ধে কোনও বৈধ যুক্তি জানান।


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

1
আমি আপনার বক্তব্যটি বুঝতে পারি যে একজনকে প্রতিদিন অলস হওয়া উচিত নয় এবং তাদের কোডগুলি প্রতিদিন পরিষ্কার করা উচিত যাতে এটি চেক ইন করা যায় the অন্যদিকে, কিছু জটিল কোডে কাজ করার সময় এটি অর্জন করা কঠিন কারণ পরিষ্কার করতে বেশ কয়েক ঘন্টা সময় নিতে পারে , এবং আপনি কেবল নিজের কোডটি পরিষ্কার করতে প্রতিদিন বেশ কয়েক ঘন্টা ব্যয় করতে পারবেন না।
জর্জিও

@ জর্জিও আপনি নিজের কোড পরিষ্কার করতে বেশ কয়েক দিন ব্যয় করেছেন? আমি প্রতিদিন যাচাই করার জন্য কিছু ভাল কারণ দিয়েছি - আপনার কারণটি হল আপনার কোডটি পরিষ্কার করতে হবে? শুধু ক্লিনার কোড সোজা আপ লিখুন।
কर्क ব্রডহર્স্ট

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

@ জর্জিও আপনি কি যে উন্নয়ন শাখা যাচাই করছেন তা কি নেই? কোডটি চেক করা উচিত যাতে অন্যান্য লোকেরাও এটি পর্যালোচনা করতে এবং পরীক্ষা করতে পারে।
কर्क ব্রডহર્স্ট

2

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

তবে, আজকের বিতরণিত সংস্করণ নিয়ন্ত্রণের সাথে কাজ করার বিলাসিতা হ'ল আপনি উভয়ই মূললাইন স্থিতিশীল রাখতে পারেন এবং git/hg/whatever commitপ্রতিবার যখন আপনি মনে করেন যে আপনি পরিস্থিতি রক্ষা করতে চান। আমি এটি প্রতি কয়েক ঘন্টা পরে এবং অবশ্যই প্রতিটি দিন শেষে অবশ্যই করি।

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

এমন সময়ে যখন সাবভারশনটি সর্বশেষ প্রযুক্তি ছিল এবং চরম ব্যথা ছাড়াই বৈশিষ্ট্যগুলি শাখা কাঁটাচামচ করা এবং মার্জ করার কোনও উপায় ছিল না, একটি মূললাইন যেখানে একাধিক বিভিন্ন বৈশিষ্ট্য একযোগে নির্মাণে ছিল সর্বোত্তম পন্থা হতে পারে। তবে এই শ্রেষ্ঠত্বটি ২০১০ ছাড়িয়ে যায় না।


2

টিম ফাউন্ডেশন সার্ভারে আপনি 'সেল্ভ' করতে পারেন যা চেক ইন হিসাবে একই নয়, তবে কেবল আপনার কোডটির একটি ব্যাকআপ তৈরি করে যাতে আপনার মেশিনটি মারা যায় তবে আপনি পরিবর্তনগুলি হারাতে পারেন নি।

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

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