কোডের ধারাবাহিকতা এবং কোড উন্নতির মধ্যে সঠিক ভারসাম্য কী?


53

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

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

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

সুতরাং, কী পরিমাণে নিদর্শনগুলি কোড শৈলীর অংশ, এবং কোথায় আমাদের ধারাবাহিকভাবে থাকা এবং উন্নতি করার মধ্যে রেখাটি আঁকতে হবে?


14
তাহলে কীভাবে কোডের মান উন্নত হবে, যদি প্রত্যেকে নিজেরাই "খারাপ" পথে সীমাবদ্ধ রাখে?
ইজকাটা


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

@ পেরি আমার অর্থ কেবলমাত্র বেসিক লিনকুই - আমার ধারণা আমার উদাহরণটি ডিএওর IEnumerableপরিবর্তে এস নিয়ে কাজ করা উচিত ছিল।
রবার্ট জনসন

2
আইসিওয়াইএমআই - ডিলবার্ট কমিক এই বিষয়টিতে
জিম বেথানকোর্ট

উত্তর:


53

আরও সাধারণ উত্তর দিতে:

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

  • "সঠিক" উপায়টি কতটা উপকারী?

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

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

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

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


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

1
@ জর্জিও, প্রতিক্রিয়ার জন্য ধন্যবাদ; আমি চূড়ান্ত পয়েন্ট এর ভাষা টুইট।

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

+1 টি। সম্মত, একটি পুঙ্খানুপুঙ্খ এবং ভারসাম্য উত্তর - বিভিন্ন পরিস্থিতিতে ভাল বিবেচনা। আবার, জর্জিও থেকে ভাল মন্তব্য।
রবার্ট জনসন

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

26

অবিচ্ছিন্ন থাকা আমার দৃষ্টিকোণে খুব কম মূল্য দেয়; ক্রমাগত উন্নতি করা আবশ্যক।

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

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

প্রাসঙ্গিক থাকার এবং জিনিসগুলি করার নতুন উপায় শেখার দায়িত্ব আপনার সহকর্মীদের।


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

8

জনসাধারণ এবং অভ্যন্তরীণ এপিআই উভয়ের জন্য, API এর ধারাবাহিকতা অত্যন্ত গুরুত্বপূর্ণ।

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

স্থানীয় ভেরিয়েবল ইত্যাদির জন্যও নামকরণের কনভেনশনগুলি সামঞ্জস্যপূর্ণ হওয়া উচিত etc.

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

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


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

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


6

এই উত্তর সহজ।

ধারাবাহিকতার গুরুত্ব বহুলাংশে।

তবে এটি একটি সতর্কতার সাথে আসে ...

আপনি এবং আপনি সহকর্মী সম্ভবত সামঞ্জস্যতার ভুল ধরণের উপর মনোনিবেশ করছেন

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

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

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

API গুলি নিষ্পত্তিযোগ্য নয়।

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

সংহতকরণ পরীক্ষা:

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

প্রমোদ

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

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

উপসংহার

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

অজগর প্রোগ্রামারদের দলগুলির জন্য পিইপি 8 স্টাইল গাইড ব্যবহারের বিষয়ে রেমন্ড হেটিংগার তার পাইকন ২০১৫ আলোচনায় কিছু দুর্দান্ত পয়েন্ট দিয়েছেন। তিনি দেখিয়েছেন যে কোডের একটি অংশে স্টাইলিস্টিক ধারাবাহিকতার আবেশের ফলে কোড পর্যালোচক মারাত্মক যুক্তি এবং নকশার ত্রুটিগুলি মিস করে। স্টাইলিস্টিক অসঙ্গতিগুলি খুঁজে পাওয়া সহজ, কারণ তাঁর অনুমানের সংক্ষিপ্তসার ঘটানো যেতে পারে ; কোনও অংশের কোডের আসল গুণ নির্ধারণ করা শক্ত

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


4

লিনকু এর সাথে অপরিচিত? যদি তা হয়, তবে আমার কোডটি আমার সহকর্মী বিকাশকারীদের জন্য যদি আমি এটি ব্যবহার না করি তবে এটি আরও রক্ষণাবেক্ষণের মতো হবে না?

সি # ভাষা এখনও বিকশিত হচ্ছে। লোকেরা যদি সি # 1 থেকে পরিবর্তনগুলি না শিখেন তবে তারা এগুলি মিস করবেন:

  • জেনেরিক্স
  • Partials
  • নামবিহীন পদ্ধতি
  • Iterators
  • অবিচ্ছিন্ন প্রকার
  • স্বয়ং-বৈশিষ্ট্য
  • নামবিহীন প্রকারের
  • সম্প্রসারণ পদ্ধতি
  • লিং
  • Lambdas
  • অ্যাসিনক্রোনাস পদ্ধতি

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

লিঙ্ক জীবনকে সহজ করে তোলে। আপনি যেখানে পারেন সেখানে এটি ব্যবহার করুন। আপনি আপনার দলের সদস্যদের উদ্বুদ্ধ করতে পারেন।

সুতরাং, কী পরিমাণে নিদর্শনগুলি কোড শৈলীর অংশ, এবং কোথায় আমাদের ধারাবাহিকভাবে থাকা এবং উন্নতি করার মধ্যে রেখাটি আঁকতে হবে?

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


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

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

3

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

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

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


1

আমি মনে করি কোন প্রকল্পে কোড শৈলী অনুসরণ করা গুরুত্বপূর্ণ eg নামকরণ কনভেনশন, ইনডেন্টেশন ইত্যাদি

আমি একমত নই যে আপনার নতুন সহকর্মীরা সেগুলি বুঝতে না পারার কারণে আপনি নতুন ভাষার নির্মাণ বা নকশার নিদর্শনগুলি ব্যবহার করা থেকে সীমাবদ্ধ হওয়া উচিত বা তারা প্রকল্পে আগে ব্যবহৃত হয়নি।

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


মাইনাস কি জন্য ছিল?
ওজ

0

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

তবে, এমন পরিস্থিতিতে পৌঁছনো খুব সহজ যেখানে বেশিরভাগ বিকাশকারী মনে করেন যে বিদ্যমান খারাপ নিদর্শনগুলি অনুসরণ করা যেমন "উন্নত অনুশীলন" হিসাবে দেখা যায় যেখানে ভাল বিকাশকারীরা খারাপ, অকল্পনীয় কোড লিখছেন।

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

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


-1

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


ডাউনটা কিসের জন্য ছিল?
পিঁপড়া

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

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