আমি স্প্যাগেটি কোডের 200K লাইন উত্তরাধিকার সূত্রে পেয়েছি - এখন কী?


470

আমি আশা করি এটি কোনও প্রশ্নের পক্ষে খুব সাধারণ নয়; আমি সত্যিই কিছু পাকা পরামর্শ ব্যবহার করতে পারে।

বিজ্ঞানীদের মোটামুটি ছোট দোকানে আমি একমাত্র "এসডাব্লু ইঞ্জিনিয়ার" হিসাবে নিয়োগ পেয়েছি যারা বিস্তৃত কোড বেসের সাথে একসাথে গত 10-20 বছর অতিবাহিত করেছে। (এটি কার্যত অপ্রচলিত ভাষায় লেখা হয়েছিল: জি 2 - গ্রাফিক্স সহ প্যাসকেল মনে করুন)। প্রোগ্রামটি নিজেই একটি জটিল রাসায়নিক প্রক্রিয়াকরণ কেন্দ্রের একটি শারীরিক মডেল; যে দলটি এটি লিখেছিল তাদের অবিশ্বাস্যরূপে ডোমেন জ্ঞান রয়েছে তবে প্রোগ্রামিং মৌলিক বিষয়গুলিতে সামান্য বা কোনও আনুষ্ঠানিক প্রশিক্ষণ নেই। অ-প্রতিরোধী কনফিগারেশন পরিচালনার পরিণতি সম্পর্কে তারা সম্প্রতি কিছু কঠোর শিক্ষা গ্রহণ করেছে। তাদের রক্ষণাবেক্ষণের প্রচেষ্টাগুলি কোডে নিজেই অনাবৃত "স্লাদ" বিস্তৃতভাবে জমে বাধা হয়ে থাকে। আমি আপনাকে পরিস্থিতির "রাজনীতি" রক্ষা করব ( সবসময় আছে) রাজনীতি!), তবে যথেষ্ট বলার অপেক্ষা রাখে না, সামনের পথটির জন্য কী দরকার তা নিয়ে opinionক্যমত্য নেই।

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

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

সুতরাং যে আমার প্রশ্ন কি হবে আপনি সবচেয়ে কার্যকর কৌশল আপনার তালিকার সাহায্য করার জন্য স্প্যাঘেটি সোজা আউট (এবং ভবিষ্যতে এটিকে প্রতিরোধ) এ অন্তর্ভুক্ত করবেন?


124
মাইকেল
ফাদারের

13
যেহেতু জি 2 হ'ল নন-কোডের মতো, তবে কিছু গাad়ফুল জিইআই দ্বারা লেখা স্বয়ংক্রিয় কোড, তাই আমি আপনাকে জি 2 তে রিফ্যাক্টর করছি বা বোধগম্য কিছুতে পুরো জঘন্য জিনিসটি পুনরায় করা হচ্ছে কিনা তা আপনার নির্দিষ্ট করা দরকার বলে আমি মনে করি।
এরিক রেপেন

101
আপনি যা করেন না কেন, এটিকে পুনরায় লিখুন না w এটি একটি গুরুতর ভুল হবে। 20 বছরের রাসায়নিক জ্ঞান: এটি এমন জিনিস যা আপনি কখনই পুনরায় তৈরি করতে সক্ষম হবেন না। এবং আপনি সঠিকভাবে বিজ্ঞানীদের কাছ থেকে সম্মান হারাবেন।
ফ্রান্সেস্কো

13
@ ফ্রান্সেসকো-র মন্তব্যে পুনর্লিখন না করার বিষয়ে জোয়েল স্পলস্কির যুক্তিযুক্ত পরামর্শ যুক্ত করুন: joelonsoftware.com/articles/fog0000000069.html
Govert

16
চমৎকার উক্তিটি আমি সম্প্রতি পড়েছি এটির সাথে সম্পর্কিত: "সফটওয়্যার একমাত্র প্রকৌশল ক্ষেত্র যা প্রোটোটাইপগুলি একসাথে ছুঁড়ে ফেলে এবং পরে তাদের বিতরণকৃত পণ্য হিসাবে বিক্রি করার চেষ্টা করে"
ক্রিস এস

উত্তর:


466

ভূমিকা

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

মনে রাখবেন: এগুলি নির্দেশিকাগুলি এবং সেগুলি পরিস্থিতি অনুসারে গৃহীত, মানিয়ে নেওয়া বা বাদ দেওয়া।

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

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


অধৈর্য জন্য নির্বাহী সংক্ষিপ্তসার

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

এখন দীর্ঘ সংস্করণের জন্য ... সাবধানতা, নিজেকে বন্ধনী!


কঠোরতা (প্রায়শই) ভাল

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

অনমনীয়তা = প্রক্রিয়া / পদ্ধতি

রাসায়নিক উদ্ভিদ বা কারখানাগুলিতে ম্যানুয়াল, পদ্ধতি, ড্রিলস এবং জরুরি নির্দেশিকা ঠিক একই কারণে সফ্টওয়্যার বিকাশের ভাল প্রক্রিয়া এবং পদ্ধতি প্রয়োজন: খারাপ ফলাফল রোধ করা, ভবিষ্যদ্বাণী বাড়ানো, উত্পাদনশীলতা সর্বাধিকীকরণ করা ...

কঠোরতা সংযম আসে, যদিও!

প্রকল্প কাঠামোর কঠোরতা

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

বিল্ড সিস্টেমগুলির কঠোরতা

যদি প্রতিটি প্রকল্প আলাদা দেখায় , তবে তারা আলাদাভাবে তৈরি করার একটি ভাল সুযোগ রয়েছে । একটি বিল্ডের জন্য খুব বেশি গবেষণা বা খুব বেশি অনুমান করার দরকার পড়ে না। : আপনি ক্যানোনিকাল জিনিস করতে প্রয়োজন এবং সুনির্দিষ্ট সম্পর্কে চিন্তা করার প্রয়োজন নেই সক্ষম হতে চান configure; make install, ant, mvn installইত্যাদি, ...

একই বিল্ড সিস্টেমটিকে পুনরায় ব্যবহার করা এবং সময়ের সাথে এটি বিকশিত হওয়াও মানের একটি ধারাবাহিক স্তর নিশ্চিত করে।

আপনার READMEপ্রকল্পের সুনির্দিষ্ট বিষয়গুলি নির্দেশ করার জন্য দ্রুত প্রয়োজন , এবং ব্যবহারকারী / বিকাশকারী / গবেষককে যদি কোনও হয় তবে গ্রেপ্তার সাথে গাইড করুন।

এটি আপনার বিল্ড অবকাঠামোর অন্যান্য অংশগুলিকেও সুবিধার্থে সহজতর করে:

সুতরাং আপনার বিল্ডটি (যেমন আপনার প্রকল্পগুলি) আপ টু ডেট রাখুন তবে এটি সময়ের সাথে আরও কঠোর এবং লঙ্ঘন এবং খারাপ অভ্যাসগুলির প্রতিবেদনে আরও দক্ষ করুন।

চাকাটি পুনরায় উদ্ভাবন করবেন না এবং আপনি ইতিমধ্যে যা করেছেন তা পুনরায় ব্যবহার করুন।

প্রস্তাবিত পঠন:

প্রোগ্রামিং ভাষার পছন্দগুলির মধ্যে কঠোরতা

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

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

কোডিং কনভেনশন এবং গাইডলাইনের কঠোরতা

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

অযৌক্তিক নিয়ম যা জীবনকে আরও কঠোর করে তোলে বা ক্রিয়াকলাপকে স্পষ্টতাকে নিষেধ করে যে একক সরল লঙ্ঘনের উপর ভিত্তি করে কমিটিকে অস্বীকার করা হয় তা বোঝা। যাহোক:

  • একটি ভাল চিন্তা আউট স্থল ruleset দূরে ঘেঙানি এবং চিন্তা অনেক সময় লাগে: কেউ কিছু কোন পরিস্থিতিতে ভঙ্গ করা উচিত;

  • এবং প্রস্তাবিত নিয়মের একটি সেট অতিরিক্ত নির্দেশিকা সরবরাহ করে।

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

কিছু কিছু ভাষা এমনকি এটি নকশা দ্বারা প্রয়োগ করে:

  • জাভা বলতে বোঝায় যে আপনি এটি নিয়ে লিখতে পারেন এমন নিস্তেজ কঙ্কালের পরিমাণ হ্রাস করতে (যদিও সন্দেহ নেই যে অনেকে এটি পরিচালনা করে)।
  • ইন্ডেন্টেশন দ্বারা পাইথনের ব্লক কাঠামো এই অর্থে অন্য ধারণা।

  • যান, এর gofmtসরঞ্জাম সহ, যা সম্পূর্ণরূপে কোনও বিতর্ক এবং প্রচেষ্টা ( এবং অহং !! ) শৈলীর অন্তর্নিহিতভাবে নিয়ে যায়: gofmtআপনি প্রতিশ্রুতিবদ্ধ হওয়ার আগে চালান ।

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

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

ডকুমেন্টেশনের কঠোরতা

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

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

কোড এবং টুলিংয়ের ক্ষেত্রে বেশিরভাগ পরামর্শই ডকুমেন্টেশনের ক্ষেত্রে প্রযোজ্য।

কোড মন্তব্যে কঠোরতা

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

কমিট লগগুলিতে কঠোরতা

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

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

কোডের প্রতিটি লাইনের একটি গল্প এবং একটি ইতিহাস রয়েছে । ভিন্নতাগুলি এর ইতিহাস বলতে পারে তবে আপনাকে এটির গল্পটি লিখতে হবে।

আমি কেন এই লাইনটি আপডেট করেছি? -> ইন্টারফেস পরিবর্তিত হয়েছে।

ইন্টারফেস কেন বদলে গেল? -> যেহেতু এটি নির্ধারণ করা লাইব্রেরি এল 1 আপডেট হয়েছিল।

কেন লাইব্রেরি আপডেট করা হয়েছিল? -> কারণ লাইব্রেরি L2, আমাদের এফ বৈশিষ্ট্যের জন্য লাইব্রেরি L1 নির্ভর করে।

এবং এক্স বৈশিষ্ট্য কি? -> ইস্যু ট্র্যাকারে 3456 টাস্কটি দেখুন।

এটি আমার এসসিএম পছন্দ নয়, এবং এটি আপনার ল্যাব জন্যও সেরা নাও হতে পারে; তবে Gitএই অধিকারটি পেয়ে যায় এবং ব্যবহার করে short logsএবং অন্যান্য এসসিএম সিস্টেমগুলির তুলনায় আপনাকে আরও ভাল লগ লিখতে বাধ্য করার চেষ্টা করে long logs। টাস্ক আইডির সাথে লিঙ্ক করুন (হ্যাঁ, আপনার একটি দরকার) এবং এর জন্য একটি জেনেরিক সংক্ষিপ্তসার ছেড়ে দিন shortlogএবং লগ লগটিতে প্রসারিত করুন: চেঞ্জসেটের গল্পটি লিখুন ।

এটি একটি লগ: ট্র্যাক রাখতে এবং আপডেট রেকর্ড করতে এখানে here

থাম্বের বিধি: আপনি যদি পরে এই পরিবর্তন সম্পর্কে কিছু সন্ধান করছিলেন , তবে আপনার লগ আপনার প্রশ্নের উত্তর দেওয়ার সম্ভাবনা আছে?

প্রকল্পগুলি, ডকুমেন্টেশন এবং কোডগুলি জীবিত

এগুলিকে সিঙ্কে রাখুন, অন্যথায় তারা আর সেই প্রতীকী সত্তা তৈরি করে না। এটি যখন আশ্চর্য কাজ করে তখন:

  • আপনার এসসিএম-এ লগ সাফ করুন, ডাব্লু / আপনার ইস্যু ট্র্যাকারের টাস্ক আইডির লিঙ্কগুলি,
  • যেখানে এই ট্র্যাকারের টিকিটগুলি নিজেরাই আপনার এসসিএমের চেঞ্জসেটগুলির সাথে লিঙ্ক করে (এবং সম্ভবত আপনার সিআই সিস্টেমের বিল্ডগুলির সাথে),
  • এবং একটি ডকুমেন্টেশন সিস্টেম যা এইগুলির সাথে লিঙ্ক করে।

কোড এবং ডকুমেন্টেশনগুলি সম্মিলিত হওয়া দরকার

পরীক্ষায় কঠোরতা

চলতি নিয়ম:

  • যে কোনও নতুন কোড আসবে (কমপক্ষে) ইউনিট পরীক্ষার সাথে।
  • যে কোনও রিফ্যাক্টরড উত্তরাধিকার কোড ইউনিট পরীক্ষার সাথে আসতে হবে।

অবশ্যই, এই প্রয়োজন:

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

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

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

সরঞ্জামগুলির ব্যবহারের ক্ষেত্রে কঠোরতা

মাঝে মাঝে বিকাশকারী / বিজ্ঞানীর পক্ষে উত্সটিতে কিছু নতুন স্ট্যাটিক চেকার চেষ্টা করতে, অন্যটি ব্যবহার করে একটি গ্রাফ বা মডেল তৈরি করতে, বা ডিএসএল ব্যবহার করে একটি নতুন মডিউল প্রয়োগ করতে চান এটি ঠিক। তবে টিমের একটি প্রচলিত সেট রয়েছে যা সমস্ত দলের সদস্যদের জানা এবং ব্যবহারের জন্য প্রত্যাশিত it's

এর বাইরে, সদস্যরা যতক্ষণ না তারা সমস্ত কিছু ব্যবহার করতে দেয়:

  • উত্পাদনশীল ,
  • নিয়মিত সহায়তার প্রয়োজন হয় না
  • আপনার সাধারণ অবকাঠামো নিয়মিতভাবে সামঞ্জস্য না করা ,
  • আপনার অবকাঠামো ব্যাহত না করা (কোড, বিল্ড সিস্টেম, ডকুমেন্টেশনগুলির মতো সাধারণ ক্ষেত্রগুলি সংশোধন করে ...),
  • অন্যের কাজের উপর প্রভাব ফেলছে না ,
  • সময়োপযোগী কোনো অনুরোধ কাজটি করতে পারবেন

যদি এটি না হয়, তবে কার্যকর করুন যে তারা ডিফল্টে ফ্যালব্যাক।


অনমনীয়তা বনাম ভার্সেটালিটি, অভিযোজনযোগ্যতা, প্রোটোটাইপিং এবং জরুরী অবস্থা

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


দল স্পিরিট ম্যাটারস

আপনার কোডবেসে এক গর্বের গর্ব বিকাশ করুন

  • কোডে গর্বের বোধ তৈরি করুন
    • ওয়ালবোর্ড ব্যবহার করুন
      • অবিচ্ছিন্ন ইন্টিগ্রেশন গেমের জন্য লিডার বোর্ড
      • ইস্যু পরিচালনা এবং ত্রুটি গণনার জন্য ওয়ালবোর্ড
    • ইস্যু ট্র্যাকার / বাগ ট্র্যাকার ব্যবহার করুন

দোষী গেমগুলি এড়িয়ে চলুন

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

এটি কোড সম্পর্কে, বিকাশকারীদের সম্পর্কে নয়

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

এটি একটি প্যারাডক্স: একটি স্বাস্থ্যকর কর্মক্ষেত্রে আপনার অহং-কম প্রোগ্রামিংকে উত্সাহিত করতে হবে তবে অনুপ্রেরণামূলক উদ্দেশ্যে অহংকারের উপর নির্ভর করতে হবে।


সায়েন্টিস্ট থেকে প্রোগ্রামার পর্যন্ত

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

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

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


কোড রক্ষণাবেক্ষণ গবেষণা কাজের অংশ

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

এটি পরিষ্কার করে দিন যে একটি কোডবেসের ধ্রুবক রিফ্যাক্টরিং এবং রিফ্রেশ করা কোড পচা রোধ করে এবং প্রযুক্তিগত debtণ হ্রাস করে এবং ভবিষ্যতের পুনরায় ব্যবহার এবং অন্যান্য প্রকল্পের জন্য কাজের অভিযোজনকে সহায়তা করে।


কেন এই সব??!

আমরা উপরের সমস্তটি নিয়ে কেন বিরক্ত করব? জন্য কোড মানের । নাকি এটি কোয়ালিটি কোড ...?

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

লক্ষ্যটি যখন নাগালের মধ্যে থাকে তখন আপনি কীভাবে জানবেন?

গুণ পরিমাপযোগ্য

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

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


তবে আমার কোডটি ইতিমধ্যে ক্র্যাপ হয়ে থাকলে কী হবে?

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

এখানে গোপনীয়তা: আপনাকে কোথাও শুরু করা দরকার

ব্যক্তিগত উপাখ্যান: একটি প্রকল্পে আমরা 650,000+ জাভা এলওসি, 200,000+ জেএসপি'র লাইন, 40,000+ জাভাস্ক্রিপ্ট এলওসি, এবং বাইনারি নির্ভরতা 400+ এমবি ব্যবহার করি a

প্রায় 18 মাস পরে, এটি 500,000 জাভা এলওসি (বেশিরভাগ ক্লিন) , জেএসপিগুলির 150,000 লাইন, এবং 38,000 জাভাস্ক্রিপ্ট এলওসি, কেবলমাত্র 100MBs এর উপর নির্ভরশীলতা রয়েছে (এবং এগুলি আমাদের এসসিএমে আর নেই!)!

আমরা এটি কিভাবে করেছিলাম? আমরা কেবল উপরের সমস্ত কিছু করেছি। বা কঠোর চেষ্টা।

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

কিছু বড় "কর্ম" ছিল ... 8500+ এক্সএমএল এলওসি-র একটি দৈত্য অ্যান্ট বিল্ড থেকে আমাদের বিল্ড সিস্টেমটি একাধিক-মডিউল মাভেন বিল্ডে স্যুইচ করা ছিল তার মধ্যে একটি। আমাদের তখন ছিল:

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

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

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

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

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


দুর্দান্ত গোপনীয়তার জন্য সুপার-সিক্রেট বর্ধমান স্প্যাগেটি কোড রিফ্যাক্টরিং সাইকেল

       +-----------------+      +-----------------+
       |  A N A L Y Z E  +----->| I D E N T I F Y |
       +-----------------+      +---------+-------+
                ^                           |
                |                           v
       +--------+--------+      +-----------------+
       |    C L E A N    +<-----|      F I X      |
       +-----------------+      +-----------------+

আপনার টুলবেলেটে একবার আপনার কাছে কয়েকটি মানের সরঞ্জাম রয়েছে:

  1. কোড মানের চেকারদের সাথে আপনার কোড বিশ্লেষণ করুন।

    লিটার, স্থির বিশ্লেষক বা আপনার কী আছে।

  2. আপনার সমালোচনামূলক হটস্পট এবং কম ঝুলন্ত ফলগুলি সনাক্ত করুন ।

    লঙ্ঘনের তীব্রতার মাত্রা রয়েছে, এবং প্রচুর পরিমাণে উচ্চ-তীব্রতার বৃহত শ্রেণি একটি বড় লাল পতাকা: যেমন, তারা রেডিয়েটার / হিটম্যাপ ধরণের ধরণের "হট স্পট" হিসাবে উপস্থিত হয়।

  3. প্রথমে হটস্পটগুলি ঠিক করুন।

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

  4. স্বয়ংক্রিয় কোডবেস সুইপ দিয়ে নিম্ন স্তরের লঙ্ঘন পরিষ্কার করুন ।

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

  5. আপনি সন্তুষ্ট না হওয়া পর্যন্ত পুনরাবৃত্তি করুন

    যা আদর্শভাবে আপনার কখনই হওয়া উচিত নয়, যদি এটি এখনও একটি সক্রিয় পণ্য: এটি বিকশিত হতে থাকবে।

ভাল ঘর রাখার জন্য দ্রুত টিপস

  • যখন কোনও গ্রাহক সহায়তা অনুরোধের ভিত্তিতে হটফিক্স-মোডে থাকে :

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

    • অবশ্যই: এটি পর্যালোচনা (নোট গ্রহণ, ফাইল ইস্যু রিপোর্ট),
    • হতে পারে: এটি পরিষ্কার করুন (স্টাইল ক্লিনআপস এবং ছোটখাটো লঙ্ঘন),
    • আদর্শভাবে: এটি রিফ্যাক্টর (বৃহত বিভাগ এবং তাদের নেগ্রোসেস পুনর্গঠন করুন)।

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


সংযোজন: ভিজ্যুয়াল প্রোগ্রামিং পরিবেশ পরিচালনা করা

বেসপোক প্রোগ্রামিং সিস্টেমগুলির ওয়াল্ড গার্ডেন

একাধিক প্রোগ্রামিং সিস্টেমগুলি, ওপি'র জি 2 এর মতো হ'ল বিভিন্ন জন্তু ...

  • কোনও উত্স "কোড" নেই

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

  • কোনও সরঞ্জামকরণ নেই

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

  • ডকুমেন্টেশন অভাব

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

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

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

এবং, যেমনটি আপনি প্রত্যাশা করবেন, এটি একটি দুর্দান্ত সিস্টেম, এটির প্রয়োজনের জন্য বেশ নমনীয় যদিও মাঝে মাঝে কিছুটা উপরে উঠে আসে যাতে আপনি অবাক হন যে "পরিবর্তে কমান্ড-লাইন সরঞ্জামগুলি ব্যবহার করবেন না কেন?", এবং দুর্ভাগ্যক্রমে সর্বদা মাঝারি আকারের নেতৃত্ব দেয় টিম বড় প্রকল্পে বিভিন্ন "সেরা" অনুশীলনগুলির সাথে এটি ব্যবহার করে অনেক লোকের কাছে কাজ করে।

দুর্দান্ত, আমরা ডুমড! - আমরা এটি সম্পর্কে কি করব?

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

সংস্করণ এবং স্টোরেজ সম্পর্কে

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

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

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

পরীক্ষা সম্পর্কে

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

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

রাস্তাটি দীর্ঘ এবং খাড়া ...

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

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

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

দুর্ভাগ্যক্রমে, এর দ্বারা বোঝা যায় যে আপনাকে ডুব দেওয়ার দরকার হবে এবং প্রচুর পরিমাণে লেগ-ওয়ার্ক করতে হবে। তাই ...

বিখ্যাত সর্বশেষ শব্দ এবং বিনীত অনুরোধগুলি:

  • আপনি যা কিছু করেন তা নথিভুক্ত করুন।
  • আপনার অভিজ্ঞতা ভাগ করুন।
  • আপনার লেখার কোনও সরঞ্জাম ওপেন সোর্স

এই সমস্ত কাজ করে, আপনি:

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

কে জানে, আপনি অস্পষ্ট ভাষা এক্স এর একটি নতুন প্রাণবন্ত সম্প্রদায়ের শুরুতেই হতে পারেন । যদি কিছু না থাকে তবে একটি শুরু করুন!

এটি ভিতরে সুন্দর হতে পারে তবে এখন পর্যন্ত কারও কাছে কোনও ধারণা নেই , তাই এই কুৎসিত প্রাচীরটি নামাতে এবং অন্যকে উঁকি দেওয়াতে সহায়তা করুন!


22
দ্রষ্টব্য: হাতছাড়া হয়ে যাওয়ায় এই মন্তব্যগুলি পরিষ্কার হয়ে গেছে। হেইলেম উত্তরের মধ্যে সবচেয়ে প্রাসঙ্গিক এবং দরকারী একত্রিত করেছে। এছাড়াও - উত্তরগুলি পোস্টগুলির জন্য 30,000 অক্ষরের সীমাটির খুব কাছে। চরম যত্ন সহ সম্পাদনা করুন।
ক্রিসএফ

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

96
আমি হার্ডকভারে এই উত্তরটি কখন কিনতে পারি?
LarsH

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

5
খুব অনমনীয়, দীর্ঘ বায়ু এবং সুস্পষ্ট বক্তব্য। এটি যদি আপনার এজেন্ডা / কৌশল হয় তবে কেউ এক মাস বা তার পরে আপনার কথা শুনবে না।
Joppe

101

খুব প্রথম পদক্ষেপ হবে একটি সংস্করণ কন্ট্রোল সিস্টেম প্রবর্তনের (SVN, গীত, Mercurial, টিএফএস, ইত্যাদি)। এটি এমন একটি প্রকল্পের জন্য আবশ্যক যা পুনরায় ফ্যাক্টরিং করবে।

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

লিগ্যাসি কোডটি কীভাবে মোকাবেলা করতে হবে সে সম্পর্কিত একটি অনুরূপ পোস্ট রয়েছে , এটি অনুসরণ করা ভাল রেফারেন্স হতে পারে - লিগ্যাসি কোডের সাথে কাজ করার পরামর্শ


19
দুর্ভাগ্যবশত, G2 ভাষার অপূর্ণতা এক উৎস ফাইল হয় পাঠযোগ্য (এটা মৌলিকভাবে একটি গ্রাফিকাল ভাষা, সদৃশ এর LabVIEW ) সংস্করণ কন্ট্রোল বাস্তবায়ন অ তুচ্ছ শ্রেষ্ঠ সময়ে, এবং সেইজন্য হয়। এটি আসলে আমাদের অন্যতম বৃহত্তম বাধা, বর্তমানে (আইএমও)।
কিমিওট

4
@ কেমোট: জি 2 এর নির্মাতার কি সংস্করণ নিয়ন্ত্রণে সহায়তা করার জন্য নিজস্ব কোনও বিশেষ সরঞ্জাম আছে? অন্য কেউ কি এমন একটি সরঞ্জাম তৈরি করেছেন?
হতাশ

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

11
আপনি ইঞ্জিনিয়ার জি 2 ফাইল ফর্ম্যাটটিকে বিপরীত করতে পারেন এবং এটি আলাদা-বন্ধুত্বপূর্ণ পাঠ্য বিন্যাসে ফেলে দেওয়ার জন্য একটি ইউটিলিটি তৈরি করতে পারেন। এটি উদ্বেগজনক বলে মনে হতে পারে তবে কোডবাসের পক্ষে এটি বড় চেষ্টা করার মতো হবে (আমার মতে)।
জোয়ে অ্যাডামস

6
@ এরিক: কেবলমাত্র "রোলব্যাক" সরঞ্জাম হিসাবে সংস্করণ নিয়ন্ত্রণ ব্যবহার করা মুদি কেনাকাটা করার জন্য পোর্শ কিনে দেওয়ার মতো - এটি এটি পাশাপাশি অন্য কিছু করে, তবে এটি আপনার পক্ষে আরও অনেক কিছু করতে পারে .......
mattnz

43

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

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

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



3
আরও ভাল .. কেবল প্রোগ্রামটি চালানোর পরিবর্তে আপনার নতুন মডিউলগুলির ইউনিট পরীক্ষা করুন :)
ডেমিয়ান ব্রেচট

1
এটি সর্বোত্তম পন্থা (সম্পূর্ণরূপে সংস্করণ নিয়ন্ত্রণে আনার সুস্পষ্ট পদক্ষেপের সাথে)। বড় জবাবগুলির সমস্ত ঘাটতি একসাথে প্রয়োগ করা খুব সাধারণ এবং খুব বড়। আপনার সামগ্রিক জিনিসের কিছু ধারণা না পাওয়া পর্যন্ত শিশুর পদক্ষেপগুলি। আমি একবার 50k প্রকল্প উত্তরাধিকারসূত্রে পেয়েছি (মূলত একই 50k এর মূলত চারটি সংস্করণ)। এক মাস পরে আমার একটি সংস্করণ ছিল এবং বেসিক রিফ্যাক্টরিং / পুনর্গঠনের মাধ্যমে প্রায় 10 কে লাইনগুলি মুক্তি পেয়েছিলাম। এটি সংগ্রহস্থলে 1-স্টিক করুন, 2-নিশ্চিত করুন যে আপনি এটি তৈরি করতে পারবেন, 3-রিফ্যাক্টর / পুনর্গঠন, পুনরায় 3 সম্পন্ন হওয়া পর্যন্ত পুনরাবৃত্তি করুন।

22

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

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


16
ওপি প্রথম পেশাদার বিকাশকারী। ওপিকে আরও বেশি ভাড়া নেওয়ার বিষয়টি বোঝানোর সর্বোত্তম উপায় হ'ল প্রথম OP-১২ মাসের মধ্যে ওপিকে কিছু স্পষ্ট অতিরিক্ত মান সরবরাহ করা। যদি এটি অর্জন করা যায় তবে ওপিতে বিশ্বাসযোগ্যতা থাকবে এবং আরও বেশি ভাড়া নিতে সক্ষম হতে পারে।
মার্কজে

20

কি দারুন. মনে হচ্ছে আপনার সামনে সত্যিই বড় চ্যালেঞ্জ রয়েছে! আমি নিম্নলিখিত লাইনের সাথে কিছু করব:

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

10

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

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

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

ফোকাস করার জন্য কিছু বিষয়:

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

  • একই কার্যকারিতা পুনরাবৃত্তি হয়েছে যেখানে ক্ষেত্রে সন্ধান করুন। একীকরণের দিকে কাজ করুন।

  • প্রত্যেককে সময়ে সময়ে মনে করিয়ে দিন যে এই পরিবর্তনগুলি জীবনকে সহজতর করা, আরও বেশি কঠিন নয় to ট্রানজিশনটি বেদনাদায়ক হতে পারে, তবে এটি একটি ভাল উদ্দেশ্যে, এবং যত বেশি দ্রুত যাত্রা শুরু করবেন তত দ্রুত সুবিধাগুলি আসবে।


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

9

কিছুটা সময় জেনসিম জি 2 দেখার পরে দেখে মনে হচ্ছে যে এই সমস্যার দিকে যাওয়ার উপায়টি কোড বেসের কতটা দেখতে এইর উপর নির্ভর করে তা বেশ নির্ভরশীল:

এখানে চিত্র বর্ণনা লিখুন

অথবা এটা:

এখানে চিত্র বর্ণনা লিখুন

এর বিপরীতে, বিয়ারের 99 টি বোতলস সৌজন্যে :

beer-bottles()

i:integer =99;
j:integer;
constant:integer =-1;

begin
for i=99 down to 1
    do
    j = (i+constant);
        if (i=1) then begin
            post"[i] bottle of beer on the wall";
            post" [i] bottle of beer";
            post" Take one down and pass it around ";
            post" No bottle of beer on the wall"; 
        end 
        else begin
            post"[i] bottles of beer on the wall";
            post" [i] bottles of beer";
            post" Take one down and pass it around ";
            if (i=2) then 
                post" [j] bottle of beer on the wall"
           else
                post" [j] bottles of beer on the wall"; 
           end
    end
end

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

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

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

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

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

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

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


1
@ হাইলেম - কোনও ধারণা নেই এবং অ্যাপ্লিকেশনটিতে 200,000 এলওসি প্লাস এন ফ্লো ডায়াগ্রাম এবং চার্ট থাকা সম্পূর্ণরূপে সম্ভব হতে পারে । সুতরাং 200,000 এলওসি অ্যাপ্লিকেশনটির জটিলতা উল্লেখযোগ্যভাবে হ্রাস পাবে be
rjzii

9

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

কোড বোঝা মুশকিল? পরীক্ষা করে দেখুন। প্রচুর কোড বেস? পরীক্ষা করে দেখুন।

আসল সমস্যাটি হ'ল লোকেরা চলে যায় এবং নতুন ব্যক্তি যখন সংগঠনে যোগ দেয় তখন একটি সাধারণ বিচ্ছিন্নতা দেখা দেয়। তদুপরি, অবাস্তব প্রত্যাশা এবং কোড-মানের সমস্যা রয়েছে।

আমি যা সামাল দেবো তা এখানে:

  1. ব্যাকআপস, সার্ভার এবং স্থানীয় সংস্করণ উভয়ই
  2. বাগ ট্র্যাকার সেট আপ করুন
  3. সংস্করণ ব্যবস্থা সেট আপ করুন
  4. FAQ / Wiki সেট আপ করুন Set
  5. সমস্ত বিজ্ঞানী / প্রোগ্রামারদের প্রথম সংক্ষিপ্তকরণ
    • তাদের 80/20 নিয়মের স্মরণ করিয়ে দিন। 20% বাগগুলি 80% সমস্যার জন্য দায়ী।
    • সবচেয়ে বড় সমস্যাগুলিতে ফোকাস করুন এবং বর্ধনের অনুরোধ এবং বন্ধ রাখুন।
    • এখানে উদ্দেশ্যটি বড় তালিকাভুক্ত লোকদের ভয় দেখানো নয়, বরং ছোট অর্জনযোগ্য জয়ের একটি তালিকা। সর্বোপরি, আপনাকে নিজের যোগ্যতাও প্রমাণ করতে হবে।
  6. বিল্ড সিস্টেম সেট আপ করুন
    • নির্ভরযোগ্য বিল্ডগুলি পেয়ে কাজ শুরু করুন (এটি কিছুটা সময় নিতে পারে)
    • প্রতিটি প্রকল্প সনাক্ত এবং নাম দিন
    • চক্রীয় নির্ভরতা চিহ্নিত করুন
    • যদি কিছু মুক্ত-উত্স প্রকল্প থেকে বাইনারি থাকে তবে উত্সগুলি পাওয়ার চেষ্টা করুন
  7. কীভাবে জি 2 কোডটি মডুলারি করা যেতে পারে তা সনাক্ত করুন, যেমন এপিআই, পরিষেবাগুলি
  8. কীভাবে জি 2 কোড পরীক্ষা করা যায়, ডকুমেন্টেড করা যায় তা সনাক্ত করুন।
  9. কোড-রিভিউ সিস্টেম সেট আপ করুন
  10. দ্বিতীয় বিবরণ
    • একটি আদর্শ মডিউল দেখতে কেমন?
    • কিভাবে পুরানো কোড বন্ধ করণীয়
    • কীভাবে পুরানো কোডের চারপাশে নতুন মডিউলটি মোড়ানো যায় (স্ট্র্যাংলার প্যাটার্নটি দেখুন http://agilefromthegroundup.blogspot.com.au/2011/03/strangulation-pattern-of-choice-for.html )
  11. উন্নত প্রোগ্রামারদের একটি ক্র্যাক দল সনাক্ত করুন এবং তাদের মডিউলগুলি মোড়ানোর জন্য তাদের সাথে কাজ করুন।
  12. যোগাযোগ পর্যালোচনা এবং ডকুমেন্টেশন উন্নত করতে কোড পর্যালোচনাগুলি এই পর্যায়ে রয়েছে। এ পর্যায়ে এটি সহজ রাখুন। কোনও প্রক্রিয়া সংক্রান্ত সমস্যাগুলি বাছাই করুন।
  13. অন্যান্য প্রোগ্রামারগুলিতে সিস্টেমটি রোল আউট করুন। ক্র্যাক দলের সদস্যরা বাকিদের পিয়ার মেন্টর হয়ে উঠুক। মনে রাখবেন স্কেলিং এখানে সমস্যা issue আপনি কার্যকরভাবে একটি পরিচালনা ভূমিকা।

9

এই জাতীয় প্রশ্নগুলি সফ্টওয়্যার কার্পেন্ট্রি প্রকল্প বিদ্যমান থাকার পুরো কারণ ।

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

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

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


আকর্ষণীয় পরামর্শ। আমি এটা দেখে নেব. : (নোট Dubois কাগজে ভাঙ্গা লিঙ্ক)
kmote

7

আমি মনে করি সবার আগে আপনার পরিস্থিতি পরিষ্কার করতে হবে। তারা আপনার কাছ থেকে কী চায়?

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

আমি মনে করি এখানে মূল প্রয়োজনীয়তা "সিস্টেমে জ্ঞান সংরক্ষণ করা", সুতরাং আপনাকে গিয়ে এটি খনন করতে হবে!

প্রথম কাজটি হ'ল ডকুমেন্টেশন লেখা।

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

আপনার তখন জিজ্ঞাসা করা উচিত তারা কোথায় যেতে চান?

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

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

দস্তাবেজগুলি বিশ্লেষণ এবং লেখার সময়, GoF ডিজাইনের ধরণগুলি পড়ুন, ব্যবহার করুন এবং বিজ্ঞাপন দিন! :-)

... আমার 2 সেন্ট


আমি সম্মত হই যে # 1 পদক্ষেপটি তারা আপনার কাছ থেকে কী চায় তা নিয়ে কাজ করা, তবে পরবর্তী পদক্ষেপটি তা করা উচিত এবং পরবর্তী পদক্ষেপটি যদি পরিস্থিতি পরিস্থিতি নথিভুক্ত না করে তবে খুব বেশি কিছু করবেন না। আপনি যদি করেন তবে তারা এটির প্রশংসা করবে না।
বিল

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

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

@ বিল: আমার মনে হয় আপনি সেই ডকুমেন্টেশনের বিষয়বস্তু এবং নির্মাণ সম্পর্কে যা লিখেছেন ঠিক
তেমনটাই বলেছেন

4

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


1
ওহ, দুর্দান্ত পরামর্শ! এই নিখরচায় ই-বুক সংক্ষিপ্তসার সহ আমাকে এই দুর্দান্ত ওভারভিউয়ের কথা মনে করিয়ে দিয়েছে ।
কিমিওট

3

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

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

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


3

এ জাতীয় পরিস্থিতিতে কাজ করার জন্য সবচেয়ে গুরুত্বপূর্ণ নীতিগুলি হ'ল:

  1. ধৈর্য্য ধারন করুন. খনন করতে 20 বছর সময় লেগেছিল এমন একটি গর্ত কয়েক সপ্তাহের মধ্যে পূর্ণ হবে না।

  2. ইতিবাচক হও. অভিযোগ ও কুড়ান করার প্রলোভন প্রতিরোধ করুন

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

  4. মডেল হন। চৌকস হয়ে কীভাবে লোকেরা কাজ করে তা প্রদর্শন করুন (কেবল তা বলবেন না)। উপরের প্রথম তিনটি বিষয় হ'ল একটি ভাল গাই হওয়ার মূল চাবিকাঠি, যা কার্যকর চতুর লোক হওয়ার পূর্বসূরি। আমার মতে, যে সমস্ত লোক প্রশংসনীয় বিকাশকারী তারা কেবল স্মার্ট নয়, তারা মডেল কর্মচারী এবং সহকর্মীও।

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

  6. ছোট অ্যাপ্লিকেশন তৈরি করুন। লিগ্যাসি কোডবেস নিয়ে কাজ করার সময় আমি দেখতে পাই যে একটি স্রোতে নেমে এসেছি। আমি সামান্য সহায়ক অ্যাপ্লিকেশন তৈরি করে আমার আত্মাকে ফিরে পেয়েছি। হতে পারে সেই অ্যাপ্লিকেশনগুলি আপনাকে সেই জায়ান্ট জি 2 কোডবেসটি পড়তে এবং বুঝতে এবং তা সংশোধন করতে সহায়তা করবে। হতে পারে আপনি একটি মিনি আইডিই বা পার্সার সরঞ্জাম তৈরি করতে পারেন যা আপনাকে আপনার পরিবেশে কাজ করতে সহায়তা করবে। এমন অনেকগুলি ক্ষেত্রে রয়েছে যেখানে মেটা-প্রোগ্রামিং এবং সরঞ্জাম-বিল্ডিং কেবলমাত্র লিগ্যাসি কোডবেসগুলি আপনাকে চাপিয়ে দেয় এমন বিশালাকার অচলাবস্থাগুলি ভেঙে ফেলতে সহায়তা করবে না, এগুলি আপনার জি 2 ভাষার দ্বারা নির্বিঘ্নে উড়ানোর ক্ষমতা আপনার মস্তিষ্ককে দেয়। আপনি যে ভাষাগুলি দ্রুত এবং সর্বোত্তমভাবে করতে পারেন তা আপনার সরঞ্জাম এবং সহায়তাকারীদের লিখুন For আমার জন্য, সেই ভাষাগুলি পাইথন এবং ডেলফি অন্তর্ভুক্ত করে। আপনি যদি পার্ল লোক হন বা আপনি আসলে C ++ বা C # তে প্রোগ্রামিং পছন্দ করেন, তবে সেই ভাষাতে আপনার সহায়ক সরঞ্জামগুলি লিখুন।


3
  1. পুনর্বিবেচনা নিয়ন্ত্রণ : ডোমেন বিশেষজ্ঞদের ফিরিয়ে আনতে সক্ষম হওয়ার সুবিধা, কী পরিবর্তন করেছে ইত্যাদি দেখুন ((সমস্ত বাইনারি ফাইলগুলির সাথে এটি আরও কঠোর, তবে যদি বিষয়বস্তুটি সত্যিকার অর্থে কোড হয় তবে অবশ্যই জি 2-টু- এর কিছু প্রকার রয়েছে) পাঠ্য রূপান্তরকারী যা ডিফগুলি সক্ষম করতে পারে))

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

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

রাজনৈতিকভাবে , যদি আপনি এই প্রক্রিয়াটিতে পুরানো টাইমারগুলির কাছ থেকে প্রতিরোধের সন্ধান পান তবে ভাল একটি সফ্টওয়্যার পদ্ধতি সম্পর্কে একটি পরামর্শ দেওয়ার জন্য পরামর্শককে নিয়োগ করুন। আপনি যাঁর মতামতের সাথে আপনি একমত হয়েছেন এমন কোনও ভাল ব্যক্তি খুঁজে পেয়েছেন কিনা তা নিশ্চিত করুন এবং ডোমেন বিশেষজ্ঞরা তা না করলেও পরামর্শকের প্রয়োজনীয়তার জন্য ব্যবস্থা গ্রহণ করুন। (তাদের একমত হওয়া উচিত - সর্বোপরি, তারা আপনাকে নিযুক্ত করেছে, তাই স্পষ্টতই তারা বুঝতে পারে যে তাদের সফ্টওয়্যার ইঞ্জিনিয়ারিং দক্ষতার প্রয়োজন need) এটি অর্থ-অপচয়কারী কৌশল অবশ্যই, তবে কারণটি যদি আপনি - নতুন হটশট যুবক প্রোগ্রামার - বলুন তাদের তাদের কিছু করা দরকার, তারা এটিকে উপেক্ষা করতে পারে। তবে যদি ম্যানেজমেন্ট কোনও পরামর্শদাতাকে $০০০ ডলার দেয় এবং তাদের কী করা দরকার তা তাদের জানায়, তারা এতে আরও বিশ্বাস রাখবেন। বোনাস পয়েন্ট: পরামর্শদাতাকে আপনি যতটা চান তার চেয়ে দ্বিগুণ পরিবর্তনের পরামর্শ দেওয়ার জন্য পরামর্শটি পান, তারপরে আপনি "ভাল লোক" হতে পারেন এবং ডোমেন বিশেষজ্ঞদের সাথে থাকতে পারেন, পরামর্শদাতার পরামর্শ অনুসারে কেবলমাত্র অর্ধেক পরিবর্তন করার জন্য আপস করুন।


3

"প্রোগ্রামটি নিজেই একটি জটিল রাসায়নিক প্রক্রিয়াকরণ কেন্দ্রের একটি শারীরিক মডেল ..."

"যেহেতু জি 2 নন-কোডের মতো, তবে কিছু গাডওয়াল জিইআই দ্বারা রচিত স্বয়ংক্রিয় কোড ..." - এরিক রেপেন

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

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

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

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

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

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

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

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

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

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

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


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


2

আমি নীচে নিক্ষেপ করা হবে:

  1. এখানে একজন প্রোগ্রামার আছেন। রাজনীতি স্ক্রু। তারা তাদের বাণিজ্য জানেন। তুমি জানো তোমার। এমনকি যদি আপনার এটিতে প্রস্রাব করতে হয় তবে সেই অঞ্চলটিকে চিহ্নিত করুন। তারা বিজ্ঞানী। তারা সেই ধরণের জিনিসটিকে সম্মান করতে পারে বা যেহেতু তারা বেশিরভাগ ক্রমাগত নিজেরাই একই কাজ করে। আপনি যা কিছু করতে পারেন তার মাধ্যমে এখনই সীমানা চিহ্নিত করুন। এই আমি ঠিক করব। এটিই আমি দায়বদ্ধ হতে পারি না।

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

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

  4. এমন কারও সন্ধান করুন যিনি এই বা অনুরূপ সমস্যার সমাধান করেছেন। কিছু গুরুতর সময় গবেষণা ব্যয়। এই ছেলেরা কারও কাছ থেকে জি 2 সম্পর্কে শুনেছিল।

  5. নকশা নিদর্শন. অ্যাডাপ্টার। তাদের ব্যবহার করুন। এ জাতীয় পরিস্থিতিতে তাদের প্রচুর পরিমাণে ব্যবহার করুন।

  6. আপনি বিজ্ঞানের কী করতে পারেন তা শিখুন। আপনি যত বেশি জানেন, তত ভাল আপনি কোডটিতে অভিপ্রায় নির্ধারণ করতে পারবেন।


13
বিজ্ঞানীদের সাথে মাথার আগে কখনও যাবেন নাকখনও । তারা আপনার জীবনকে একটি জীবন্ত নরকে পরিণত করবে। :)
হাইলেম

2

বিশ্লেষণ আগে করুন।

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

একসাথে মাত্র কয়েকটি পরিবর্তন উপস্থাপন করুন (একই পরিস্থিতিতে আমি প্রতি 2 সপ্তাহে 2-3 অনুশীলন করেছি)

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

  • পরিবর্তনের সংখ্যা কেন সীমাবদ্ধ?

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

অনুশীলনগুলি কীভাবে তাদের প্রভাবিত করে তা নিয়ে আলোচনা করার জন্য একটি সাপ্তাহিক র‌্যাপ-আপ সভা যুক্ত করুন।

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

কিছু অনুশীলন প্রাধান্য পায়।

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

যে অনুশীলনগুলি কাজ করে না সেগুলি সরান।

কাজ করে না এমন অনুশীলনগুলি থেকে মুক্তি পেতে ভয় পাবেন না। যদি উচ্চ ব্যয় হয় এবং কোনও লাভ না হয় তবে অনুশীলনটি সরিয়ে দিন।

উন্নতি একটি প্রক্রিয়া।

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


0

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

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

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

কেউ কোডের কয়েকটি লাইন সরিয়েছেন যা তারা বুঝতে পারেনি এবং এটি একটি বিঘ্ন ঘটিয়েছে -> ডিডিডি পরিচয় করিয়ে দেয়।

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


0

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

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

আপনি যখন এটি করছেন, অন্য কম ঝুলন্ত ফলগুলি সন্ধান করুন এবং সেই সমস্যাগুলি সমাধান করুন।

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

শুভকামনা!

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