ভবিষ্যতের প্রুফিং কোড


33

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


5
আমি মনে করি যে একমাত্র ভবিষ্যত প্রিফ কোডটি হ'ল শুভ্রতর স্থান। :)
অ্যাডাম আর্ল্ড

6
"ঠিক সময়ে, শুধু ক্ষেত্রে নয়"।
রেন হেনরিচস

4
@ এডেম আমি একমত নই, ভবিষ্যতের প্রুফিংয়ের জন্য সেই ভাষা অন্যদের চেয়ে আলাদা নয় ... (^ _—)
en.wikedia.org/wiki/Whitespace_

উত্তর:


62

ওয়েল সবার আগে, কিছু জিনিস রয়েছে যার স্পষ্টতা দরকার:

  • ভবিষ্যতের প্রুফিং স্টাফ যোগ করছে না
  • ভবিষ্যতের প্রুফিং নিশ্চিত করছে যে আপনি বিদ্যমান কার্যকারিতা ভঙ্গ না করে সহজেই কোড / বৈশিষ্ট্যগুলি যুক্ত করতে পারেন

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

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

আমার 2 সি


এই এবং @ থরবজর্ন রাভন অ্যান্ডারসন সম্মিলিত পরীক্ষাগুলি সম্পর্কে সঠিক উত্তর হবে।
অ্যান্ডি লোরি

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

ভবিষ্যতের প্রুফিং বৈশিষ্ট্যগুলি যুক্ত নাও করা যেতে পারে তবে অবশ্যই আপনি কোড যুক্ত করতে পারেন। একটি কৌশল হ'ল সুরক্ষা চেক যুক্ত করা এবং স্পষ্টভাবে কোনও অপরিবর্তিত আচরণকে অস্বীকার করা।
এডিএ-কিএ মার্ট-ওরা-ওয়াই

18

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

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

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


+1: ভবিষ্যতের ভবিষ্যদ্বাণী করা এত কঠিন। কেবলমাত্র ভাল নকশা ব্যবহার করা - এবং এটিকে "ভাল ডিজাইন" বলা ভবিষ্যতের ভবিষ্যদ্বাণী করার ভান করার চেয়ে ভাল।
এস .লট

17

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

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

  • উপরের মতো, আপনার অ্যাপ্লিকেশনটির কোনও অংশ একটি SOAP বা REST API এর মাধ্যমে প্রকাশ করা একই জিনিস অর্জন করে। প্রযুক্তিগুলি যেভাবে বিকশিত হয়েছে, অগত্যা আপনাকে অ্যাপ্লিকেশনটির প্রতিটি অংশ পুনরায় লেখার প্রয়োজন হবে না কারণ নতুন প্রযুক্তিগুলি এখনও পুরানো সাথে যোগাযোগ করতে সক্ষম হবে।

  • কোড লেখার ক্ষেত্রে এটির প্রয়োজনে আমি মনে করি যে কোডটি খুব কম বা পরীক্ষার সম্ভাবনা হওয়ায় এটি অত্যন্ত বিপজ্জনক।

সুতরাং, সমস্ত উপায়ে, কোডের ভবিষ্যতের প্রমাণ তৈরি করুন (নাসা এখনও ফোরট্রান ব্যবহার করে স্পেসশিপগুলি প্রেরণ করবে), তবে কোড 'ঠিক তেমন ক্ষেত্রে' লিখবেন না।


1
'ভবিষ্যতের প্রমাণ' এবং 'ভবিষ্যতের প্রয়োজনে ক্ষেত্রে' পার্থক্যের জন্য +1
জন শ্যাফট

2
শব্দ নকশা পরামর্শ। এ থেকে নিখোঁজ হওয়া একটিমাত্র স্পষ্ট বক্তব্য যে "ভবিষ্যতের প্রমাণ" নিছক অর্থহীন গুঞ্জন-বাক্যাংশ যার অর্থ "যুক্তিসঙ্গতভাবে সু-নকশিত"।
এসলট

11

আপনি একটি উত্পাদনের পরিবেশে কতবার কোডের টুকরোটি সক্রিয় করেছেন এবং ভেবেছিলেন, "godশ্বরকে ধন্যবাদ যে আমি এটি লিখেছি 2 বছর আগে!"!

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


3
আপনি কি পরামর্শ দিচ্ছেন "2 বছর আগে আমি godশ্বরকে ধন্যবাদ দিয়েছি!" বিরল? আমার অভিজ্ঞতায় এটি কখনও ঘটেনি, তবে সম্ভবত এটিই আমি।
এস.লট

4
এটি একটি খুব বিরল ঘটনা - কারণ যে কোড বেসগুলি 2 বছর বাদে শক্ত থাকে / 2 বছর দূরে পরিবর্তনের পূর্বাভাস দেয় তা খুব শক্ত।
সুব শঙ্করা সুব্রমনিয়ান

2
ভাল, আমি আসলে বেশ কয়েকটা "থ্যাঙ্কস গড আমি লিখেছিলাম যে এটি এক বছর আগে" মুহুর্ত ছিল। আমি যা মনে করি তার চেয়ে বেশি চালাক
ফ্যালকন

1
@ ফ্যালকন এই মুহুর্তগুলিতে বিস্তারিত জানাতে যত্নশীল? আপনি কোনটি সঠিক করেছেন তা জানতে বেশ আকর্ষণীয় হবে।

7

অন্যান্য উত্তরগুলির মধ্যে অনেকগুলি বড় ধরণের ডিজাইনের সমস্যাগুলি সম্বোধন করে বা বিমূর্ত হয়। আপনি যদি ভবিষ্যতে যা ঘটে যায় তার পদক্ষেপে ভাবেন আপনি কোডটি ভবিষ্যতের প্রুফকে সহায়তা করার জন্য কিছু পরিষ্কার কৌশল নির্ধারণ করতে পারেন ।

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

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

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

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

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


6

গুড, পরিষ্কার, সুগঠিত কোড হল অর্থে ভবিষ্যত প্রমাণ যে এটি সঠিকভাবে বাস্তবায়ন করতে পরিবর্তন এবং সংযোজন সহজ করে তোলে।


5

"ফিউচার প্রুফ" এর সর্বোত্তম অর্থ "আলগাভাবে মিলিত নকশা"। "ভবিষ্যতের প্রমাণ" বলার সময় লোকদের 80% অর্থ "নমনীয়" হয়। কখনও কখনও তারা চেষ্টা করে দেখতে সুন্দর বলে say তবে কমপক্ষে তারা সময় মতো কিছু সরবরাহ করছে that

সবচেয়ে খারাপ "ভবিষ্যতের প্রুফ" অর্থহীন। 20% সময়, কেবল কিছু সরবরাহ করার পরিবর্তে বিকল্প প্রযুক্তি নিয়ে গবেষণা করার সময় নষ্ট করার অজুহাত। তারা কিছু সরবরাহ করছে না (বা যা তারা সরবরাহ করছে তা সমস্যাটির জন্য জটিল))

দুটি প্রান্ত মামলা আছে।

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

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

    আমাদের "A" প্রকল্পটি সরবরাহ করতে হবে, এই প্রকল্পটি "বি" "A" এর তাত্ক্ষণিকভাবে পুনরায় লেখার দিকে পরিচালিত করবে knowing শুধুমাত্র এই ক্ষেত্রে, আমরা ভবিষ্যতের প্রমাণ "এ" সক্ষম করতে পারি।


5

ইয়াগনি = আপনার দরকার নেই

আপনার প্রবৃত্তিগুলি সঠিক: তাদের কোডটি অতিমাত্রায় কার্যকর, রক্ষণাবেক্ষণ এবং পরীক্ষার বোঝা যুক্ত করে এবং এমন জিনিসগুলির জন্য সময় নষ্ট করে যাগুলির ব্যবসায়িক মূল্য নেই।

আরও দেখুন: সোনার ধাতুপট্টাবৃত


4

প্রশ্নের শিরোনাম উপেক্ষা করা এবং "জিনিস inোকানো কারণ কোনও দিন হয়ত এটি কোনও দিন চাইলে" সম্পর্কে মূল বক্তব্যটি আঁকানো ...

উত্তর না হয়। কখনও। আজ আপনার প্রয়োজন নেই কোডের একটি সেলাই লিখবেন না। কারণটা এখানে:

  1. প্রোগ্রামটি যতটা প্রয়োজন তত বেশি জটিল।
  2. আপনার কখনই বৈশিষ্ট্যের প্রয়োজন নেই, তাই আপনি আপনার সময় নষ্ট করেছেন।
  3. ভবিষ্যতে যদি কেউ কখনও এর জন্য জিজ্ঞাসা করে তবে বৈশিষ্ট্যটির প্রয়োজনীয়তাগুলি কী হবে তা আপনি জানেন না। সুতরাং আপনি এটি খুঁজে বের করতে হবে এবং যাইহোক এটি এটিকে সংশোধন করতে হবে।

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

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