কোড "উত্তরাধিকার" কখন? [বন্ধ]


63

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


উত্তরের সংক্ষিপ্তসার

উত্তরগুলি সন্ধান করে আমি চারটি সাধারণ থিম দেখছি। আমি যেমন ভাঙ্গন দেখছি তা এখানে:

  1. যে কোনও কোড সরবরাহ করা হয়েছে: 6
  2. ডেড সিস্টেম: 2.5
  3. ইউনিট পরীক্ষা নেই: 2
  4. বিকাশকারীরা প্রায় নেই: 1.5


1
এটি পৌছে যাওয়ার সাথে সাথে কাজ করার সাথে সাথে লিগ্যাসি কোড।
মার্টিন বেকেট 21

23
আপনি যদি এটি না লিখে থাকেন তবে এটি লিগ্যাসি কোড ;-)
স্টিভেন এ। লো

20
এটি লিগ্যাসি কোডটি যদি লিখেছে যে প্রত্যেকটি অবসরপ্রাপ্ত বা মৃত, এবং যদি এটি চালিয়ে যায় তারা যদি ইচ্ছে করে তবে তারা were অন্যথায়, এটি কেবল বিদ্যমান কোড বেস বলে।
অযৌক্তিক

3
@ StevenA.Lowe, যথেষ্ট সময় দেওয়া, এটা উত্তরাধিকার কোড এমনকি যদি আমি এর করেনি এটা লেখেছি।
ক্যারলেসা

উত্তর:


43

আমি বরং উইকিপিডিয়া সংক্ষিপ্তসার থেকে আংশিক :

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

অন্যান্য ব্যক্তিদের তাদের উত্তরে কি বর্ণনা অনেক আছে কারণে কেন কোড "লিগ্যাসি" হয়ে ওঠে। তবে প্রয়োজনীয় প্রশ্নটি হ'ল এটি:

তবে এটি এখনও প্রযোজনা ব্যবস্থায় ব্যবহৃত হয় - তবে এটি কি সত্যিই উত্তরাধিকার? এবং এটি উত্তরাধিকার করে তোলে?

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

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

সিস্টেম বা কোড লিগ্যাসিতে পরিণত হতে পারে এমন কোনও কারণ রয়েছে :

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

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

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

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

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

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

নিখুঁতভাবে কার্যকরী কোডের এই অযৌক্তিক লেবেলিং থেকে আমাদের লজ্জা পাওয়া উচিত?

এবং উত্তর না হয়, আমাদের করা উচিত নয়; লেবেল করা হয় warranted শব্দটি নিজেই পরিষ্কারভাবে কার্যকরী কোড বোঝা। বিন্দু নয় যে এটা ফাংশন, কিন্তু কিভাবে এটি কাজ করছে।

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

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


এটি বলেছিল, কর নিরীক্ষাও হওয়া উচিত একেবারে ঠিক পরিস্থিতি।
ফ্লোরিয়ান মার্গেইন

আমি বলব: এটি বিদ্যমান প্রযুক্তি স্ট্যাকের সাহায্যে সিস্টেমটি আর স্কেলযোগ্য হতে পারে না।
রমিজ উদ্দিন

40

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

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


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

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

4
@ জেরি: তাহলে এটি কী উত্তরাধিকারসূত্রে পরিণত হয়েছে? উত্তরাধিকার "খারাপ" প্রতিশব্দ নয়।
স্যাটানিকপুপি

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

1
@ কাওয়াস: আমার কাছে মনে হয় @ চাদের উত্তর তখন / যখন নতুন সিস্টেমটি অন্য ভাষায় করা হচ্ছে, বা বিভিন্ন হার্ডওয়্যার ইত্যাদি ব্যবহার করা হয়েছিল তখন প্রয়োগ হবে, এটি এখনও জাভা ব্যবহার করে এখনও টুক্সোডো ব্যবহার করা হচ্ছে ইত্যাদি। আমি এটিকে প্রয়োগ হিসাবে দেখছি না।
জেরি কফিন 4

28

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

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

শেষ পয়েন্টটি অন্য দুটি বিষয়কে নিয়ে যায় যা আমার কাছে প্রায়শই সত্য বলে মনে হয়।

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

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

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

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

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

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


3
দেখুন, এখন আমি এটিকে চিহ্নিত করব কিনা তা আমি জানি না, দুঃখজনকভাবে এটি সত্য, তবে আমি অবাক হই যে এটির এমন মনোভাব যদি আমাদের থেকে দূরে সরে যাওয়া দরকার ...
নিম

+1 টি। আমি একই পরিমাণে কিছু উত্তর দিতে চলেছিলাম। উত্তরাধিকার হ'ল এমন কোনও কোড যা সক্রিয়ভাবে রক্ষণাবেক্ষণের পরিবর্তে ব্যবহৃত হয়।
ডেনিস ডি বার্নার্ডি

@ নিম: আমি মনে করি না যে এটি এমন একটি মনোভাব যা "আমাদের" থেকে দূরে সরে যাওয়া দরকার। এটি সুস্পষ্ট একটি নিছক বিবৃতি। :-) এক মুহুর্তের জন্য এটি সম্পর্কে ভাবুন এবং অবাক হন যে আপনি যদি কোনও নতুন পরিবেশে পৌঁছে যান তবে আপনি কী উত্তরাধিকারের কোড হিসাবে বিবেচনা করবেন; সক্রিয়ভাবে বিকাশ করা হচ্ছে এমন নতুন এবং দুর্দান্ত স্টাফ ব্যতীত এটি হ'ল সবকিছু।
ডেনিস ডি বার্নার্ডি

@ জেরি, সুতরাং আপনি ইউনিট পরীক্ষা পছন্দ করেন না তখন? ;)
নিম

1
@Nim: তাই - আমি মনে করি তারা দরকারী, কিন্তু এ পর্যন্ত সর্বব্যাধিহর ঔষধ যা তারা প্রায়শই চিত্রিত করছি সংক্ষিপ্ত।
জেরি কফিন

17

লিগ্যাসি কোড সাধারণত কোনওভাবে এতিম হয়। সীসা বিকাশকারী, একমাত্র লোক যিনি এটি বুঝতে পেরেছিলেন, একটি বাসে ধাক্কা খেয়েছিল এবং তার নোটগুলি তার স্থানীয় ইউক্রেনীয় উপভাষায় লেখা হয়েছিল, যা এখন একটি মৃত ভাষা। অথবা, পর্যায়ক্রমে ভিজ্যুয়াল বেসিক .0.০ তে লিখিত কিছু ।

আমি সারাক্ষণ লিগ্যাসি কোডে কাজ করি। আমি বলব বৈশিষ্ট্যগুলি হ'ল:

  • এটি বিশাল প্রচেষ্টা ছাড়া বাড়ানো যায় না
  • এটি সহজেই নতুন হার্ডওয়্যারে স্থানান্তরিত করা যায় না
  • সহজেই প্রতিস্থাপন করা খুব ব্যবসায়ের সমালোচনা

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


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

1
হ্যাঁ, আপনি সম্ভবত (বাস ড্রাইভার, ইউক্রেনীয় ভাষা, এবং ভিবি 6 ডিভস) সমস্তই এক অনুচ্ছেদে আপত্তিজনকভাবে পরিচালনা করেছেন। তবে অভিশাপ আমি হাসি কি :)
ডার্কনাইট

আমি ১৯৯৯ সালের একজন সময়ের ভ্রমণকারী, আপনার অর্থ 2011 এর পর থেকে ভিজ্যুয়াল বেসিক 6 উত্তরাধিকার ?
hjk

@ এইচজেইকে আমি ২০০ # সালে সি # / এসপ নেট এর আবির্ভাবের পরে খুব বেশি কিছু বলতে চাইছিলাম, তবে মাইক্রোসফ্টের সমর্থন শেষ হওয়ার পরে ২০০৮ সালে ঘুরে দেখা গেছে।
শয়তানীপ্পি

12

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


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

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

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

6
আমি জেরির মন্তব্যের সাথে একমত ইউনিট পরীক্ষা অনুপস্থিতি মাত্র কোডের একটি গুচ্ছ এক গন্ধ পাচ্ছি যা পারে (বা না করি অসাধুতা ইঙ্গিত)।
smci

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

8

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

এটি "আপনার সময়ের আগে" তবে "এখনও আপনার মাথা ব্যথা"


5

লিগ্যাসি কোড এমন কোড যা কেবল কোড বেজে থাকে কারণ অনেক কিছুই অন্যথায় কাজ করা বন্ধ করে দেয়। অন্য কথায়: এটি হ'ল পিছনের সামঞ্জস্যতার একমাত্র কারণ।

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

একটি উদাহরণ একটি লাইব্রেরির এপিআই-এর অবচিত পদ্ধতি। তারা এখনও রয়েছে, যাতে যে কেউ লাইব্রেরি আপডেট করে সে তার প্রকল্পটি এখনও তৈরি করতে পারে তবে সেগুলি অবচয় হিসাবে চিহ্নিত হয়েছে এবং আপনি সংকলক আপনাকে একটি সতর্কতা দেবে।

অন্য একটি উদাহরণ মাইক্রোসফ্ট সেই সমস্ত অদ্ভুত কৌশলগুলি চালিত করে যেগুলি প্রোগ্রামগুলি চালিত করতে পারে যা তাদের ওএসের সংস্করণগুলির জন্য রচিত ছিল যা তারা সম্পূর্ণ হ্রাস পেয়েছে। এই সত্তার চূড়া:

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


4

উত্তরাধিকার উত্তরাধিকার অন্তর্ভুক্ত। লিগ্যাসি কোডটি কেবল এমন কোড যা আপনি অতীত থেকে উত্তরাধিকার সূত্রে পান। এটি লিগ্যাসি কোডটি এমনকি যদি আপনি নিজে আগে লিখেছিলেন!

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


অতীতটি 1 দিন, 1 ঘন্টা বা 1 বছর হতে পারে। এটি উত্তরাধিকার করে না।
ভিন্স পানুসিও 12

2

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

এটি চালিত হার্ডওয়ার / ওএস যদি পুরানো হয় এবং বিক্রেতার দ্বারা বন্ধ করা হয় - ধর্মঘট 1।

যদি কোনও কারণে এটি পুনরায় লেখার চেয়ে এটি ঠিক করার চেষ্টা করা আরও কাজ হয় তবে কারণেই

  • মূল বিকাশকারীগণ চলে গেছে are
  • প্রোগ্রামটি খারাপভাবে লেখা আছে
  • এটি আরও নতুন প্ল্যাটফর্মে আরও ভাল করা যায়, এবং এটি এখনও কোম্পানির পক্ষে এটি মূল্যবান

তাই না

  • আসল উত্স আর পাওয়া যায় না এবং / অথবা টুকরো হারিয়ে যায়

ধর্মঘট ঘ।

একাধিক সংস্থার একত্রে মিশ্রণ - স্ট্রাইক 3 - এক পক্ষ সম্ভবত উত্তরাধিকার হিসাবে ট্যাগ হতে চলেছে।

তৃতীয় পক্ষের অ্যাপ্লিকেশন এবং / অথবা পরিষেবা হিসাবে বিক্রি আরও ভাল, সস্তা বিকল্প আছে - ধর্মঘট 4।

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

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

কখনও কখনও যখন পরিবর্তন পরিবর্তিত হয় তখন এটি তরঙ্গগুলিতে পরিবর্তিত হতে পারে যার অনেকগুলি ট্রিকাল প্রভাব রয়েছে ... নতুন পরিচালনার খাঁটির উপর নির্ভর করে এটি অনেকগুলি অ্যাপ্লিকেশন উত্তরাধিকার রেন্ডার করতে পারে যা অন্যথায় জরিমানা হতে পারে।

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


+1, সুন্দর উত্তর - org এর দৃষ্টিকোণ থেকে উত্তরাধিকারের কিছু বিবেচনা করা আরও ভাল ...
নিম

0

কোড লিগ্যাসি হ'ল যখন কেউ এটিকে পরিবর্তন করতে ভয় পায় কারণ সে এটিকে ভেঙে দিতে পারে। এটি তখন আরও বেদনাদায়ক হয় যখন পুরো কোডটি কোডে পরিবর্তিত হয়ে কাঁপতে পারে।

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

আমি এটিও মনে করি যে লিগ্যাসি কোডটি এটি কত পুরানো তার সাথে কোনও সম্পর্ক নেই। শুরু থেকে কেউ লিগ্যাসি কোডটি লিখতে পারেন।

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