অন্যরা এটির জন্য দ্রুত প্রতিশ্রুতিবদ্ধ হওয়া অবস্থায় আমি কীভাবে একটি কোড বেসকে সংশোধন করতে পারি?


18

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

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

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

উত্তর:


35

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

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


17
হ্যা হ্যা হ্যা. আপনার এক মাস ব্যাপী একক ট্যুর-ডি-ফোর্সে যাওয়ার তাগিদটি প্রতিরোধ করুন কেবলমাত্র আপনাকে খুঁজে পেতে হবে যে কোডবেসটি রিফ্যাক্টরের কথা বলেছিলেন, আপনাকে পুরোপুরি পরিবর্তন করেছে এবং আপনাকে আবারও শুরু করতে হবে। একবারে এক ধাপ ভাল করে নিন।
টিডামার্স

একবারে ঠিক! বড় রিফ্যাক্টরিংগুলি কোথাও যায় না (দেখুন নেটস্কেপ ,, বা প্রজেক্ট পিরামিড )
আন্দোমার ২৩:০৪ এ ২০'১২

8

আপনি কখনই "যোগাযোগের পক্ষে যথেষ্ট বড় নন"। আপনি যদি আঙ্গুলগুলি টাইপিং করতে পারেন তবে আপনার ঠোঁট কথাটিও করতে পারে। দিনের শেষে প্রযুক্তির উন্নতি 85% যোগাযোগ এবং 15% প্রযুক্তিগত। কারও সাথে কঠিন কথোপকথন করার চেয়ে আপনি কোডিংটিতে বসে থাকবেন ... তার মানে এটি ভাল ধারণা নয়। যোগাযোগ আসলে যা আপনি চেষ্টা করছেন তার শক্ত অংশ, তবে কেবল এটিকে এড়িয়ে চলবেন না।


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

+1 টি। আপনি যোগাযোগ না করে কারও সাথে একটি কোড বেস ভাগ করতে পারবেন না
মার্কজে

4

হ্যাঁ, একটি শাখা এটির জন্য ভাল সমাধান।

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

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


1
-1: না। @ কার্ল বিলেফেল্টের উত্তর দেখুন।
জিম জি।

হ্যাঁ? আমি কার্লের সাথে দ্বিমত পোষণ করি না, এ কারণেই আমি দ্রুত শুরু করার বিষয়ে একটি বক্তব্য রেখেছি।
বেনজামিন ব্যানিয়ের

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

3

আপনি "এটি এখনও করবেন না" বিকল্পটি বিবেচনা করেছেন?

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

অন্যান্য ছেলেরা সম্ভবত প্রচুর নতুন কার্যকারিতা যুক্ত করছে, বিদ্যমান কার্যকারিতা পরিবর্তন করে এবং সম্ভবত কিছু কার্যকারিতা সরিয়ে ফেলছে।

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


+1 টি। যদি আপনার কোডবেস ব্যাপক প্রবাহে থাকে তবে বড় পুনর্লিখনের চেষ্টা করার এটি সম্ভবত সেরা সময় নয়। যখন বিষয়গুলি শান্ত হয় তখন আপনার বিকাশের চক্রটিতে একটি সময় চয়ন করুন।
আনোন

2

tl; dr - মনে হচ্ছে বড় লিগগুলিতে উঠার সময়। আপনি যদি এই ধরণের জিনিসটিতে না থাকেন তবে শূকরের উপরে লিপস্টিক লাগানো এটি কোনও প্রাকৃতিকভাবে তৈরি করে না ...

জনগণের সমস্যা

প্রথম সংখ্যাটি কমিট সিঙ্ক্রোনাইজেশন। যদি আপনার একই সময়ে একাধিক লোক একই কোডে কাজ করে থাকে তবে সমস্যা রোধ করতে আপনার কেবলমাত্র একটি নিয়ম প্রয়োজন:

Rule 1: Always pull before you merge/rebase

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

কোড সমস্যা

আপনি কীভাবে জানবেন যে আপনি যে পরিবর্তনগুলি করেছেন সেগুলি কোড ভঙ্গ করে না?

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

Rule 2: Don't make assumptions, write proofs (ie tests).

এগুলি ছাড়াও, আপনি উত্স / দূরবর্তী মাস্টারটির দিকে ধাক্কা দেওয়ার আগে পরীক্ষার সম্পূর্ণ প্রকার চালানো উচিত।

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

আপনার প্রথমে কিছু সাংগঠনিক পুনর্গঠনের প্রয়োজন হতে পারে

যদি উপরের সমাধানগুলি সহজে প্রয়োগ করা যায় না, সম্ভবত বিকাশের কাঠামোর সাথে কিছু সমস্যা রয়েছে যা প্রথমে সমাধান করা দরকার।

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

Devs যে এক্সেস কমিট পেতে না জন্য, তারা তাদের নিজস্ব দূরবর্তী ট্র্যাকিং শাখা তৈরি করতে শেখা উচিত (Git এবং gitorious এই জন্য ভাল) যাতে devs যারা না এক্সেস কমিট আছে সহজে টান করতে পারেন / উৎপত্তি মধ্যে শাখা একীভূত। পরিবর্তনগুলি যদি ছোট হয়, প্যাচগুলি ঠিক পাশাপাশি কাজ করবে।

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

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

"পৌরাণিক মানুষ মাস" এর মিথ

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

পৌরাণিক মানুষ মাসের সমস্যাটি আসলেই কাটিয়ে উঠতে পারে। আপনার শুধু আপনার প্রকল্পটি সামরিক বাহিনীর মতো চালানো দরকার। শ্রেণিবিন্যাসের মধ্যে অনেকগুলি স্তর রয়েছে কারণ এটি সাধারণ জ্ঞান যে পৃথক লোকেরা কেবল মুষ্টিমেয় লোকের সাথে যোগাযোগ পরিচালনার ক্ষেত্রে কার্যকর। যতক্ষণ না কোনও একক ব্যক্তি 5--7 জনেরও বেশি লোকের কাজ পরিচালনার জন্য দায়বদ্ধ না হয় ততক্ষণ সিস্টেমটি অনির্দিষ্টকালের জন্য স্কেল করতে পারে।

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

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


-1

পরিষ্কার / সুন্দর এবং সবচেয়ে গুরুত্বপূর্ণভাবে দীর্ঘমেয়াদী রক্ষণাবেক্ষণযোগ্য কোড।

আমার অভিজ্ঞতায় পরিষ্কার / সুন্দর রক্ষণাবেক্ষণের শত্রু। সুন্দর কোড প্রায়শই:

  • ফ্রেমওয়ার্কটিতে একটি স্তর রয়েছে যা উচ্চ স্তরের বিমূর্ততা প্রবর্তন করে
  • কোড পুনরায় ব্যবহারের জন্য অনুকূলিত হয়, যার ফলে প্রচুর নির্ভরতা হয় in
  • নির্দিষ্টটির পরিবর্তে জেনেরিক সমস্যা সমাধানের চেষ্টা করে

অন্যদিকে, রক্ষণাবেক্ষণযোগ্য কোড:

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

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

বাদে বিমূর্ততা সময়ের পরীক্ষায় দাঁড়াবে না। এবং বিমূর্তকরণের সাথে যে কোনও সমস্যা স্থানীয় ফিক্সটিকে এমন এক স্থির করে তোলে যা সম্ভাব্যভাবে অ্যাপ্লিকেশন-ব্যাপী প্রভাব ফেলে।
আন্দোমার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.