আপনি কীভাবে জানতে পারবেন যে আপনি পাঠযোগ্য এবং সহজেই বজায় রাখতে সক্ষম কোডটি লিখেছেন?


336

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

এই লক্ষ্যগুলি পূরণ করা হয় যখন কেউ মূল লেখকের বিশেষজ্ঞের পরামর্শ ব্যতীত কোড সহ নিম্নলিখিতটি করতে পারে :

  • কোডটি পড়া এবং যুক্তির প্রবাহকে একটি মৌলিক স্তরে বোঝা সম্ভব।

  • ইনপুট, আউটপুট এবং অ্যালগরিদম অন্তর্ভুক্ত করতে কোড কী করছে তা গভীর স্তরে বোঝা যায়।

  • অন্যান্য বিকাশকারীরা বাগ কোডগুলি বা রিফ্যাক্টরিংয়ের মতো মূল কোডে অর্থবহ পরিবর্তন করতে পারে।

  • যে কোনও নতুন কোড যেমন ক্লাস বা মডিউল হিসাবে লিখতে পারে যা মূল কোডটি উপভোগ করে।

আমরা কীভাবে কোডের মানকে মাপ দিতে বা পরিমাপ করব যাতে আমরা এটি পাঠযোগ্য, বোধগম্য এবং বজায় রাখতে সক্ষম জানি?


154
বাধ্যতামূলক লিঙ্ক (একবারে xkcd না করার জন্য ): osnews.com/images/comics/wtfm.jpg
জেরি কফিন

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

6
"অবশ্যই আপনার দৃষ্টিকোণে আপনার কোডটি পঠনযোগ্য" - এটি সুস্পষ্ট নয়!
আঙ্কেলজিভ

24
আমি বলব আপনি এটি জানেন যখন আপনি এটি লেখার কয়েক মাস পরে দেখবেন।
JeffO

2
@ এসফিলজ: আমি আমার স্ত্রীকে কিছু কোড দেখিয়েছি এবং সে ভেবেছিল এটি সত্যই খারাপ কোড, কারণ সে এটি পড়তে পারে! (এতে অনেকগুলি
ইংরাজী শোনার

উত্তর:


369

কোডটি পর্যালোচনা করার পরে আপনার পিয়ার আপনাকে জানায়।

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


6
অনুভূতিমূলক পরীক্ষার কিছুই হারায় না।
বিশ্ব প্রকৌশলী

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

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

12
@ রাঙ্গিলিন, ভাল, আপনার সহকর্মী ঠিক থাকতে পারেন।

11
@ রাঙ্গী আপনার সহকর্মীদের সাথে কাজ করতে হবে। যদি তারা আপনার কোডটিকে কঠিন মনে করে তবে তা আপনার কোডের সাথে একটি সমস্যা। দীর্ঘমেয়াদী, আপনি তাদের শিক্ষিত করতে পারেন, অথবা ভাল সহকর্মীদের (আপনি স্থানান্তর করতে পারেন অথবা আপনি নিয়োগের প্রক্রিয়া প্রভাবিত করতে পারেন) পেতে ... ওহ হ্যাঁ চেষ্টা করুন, এবং না সবসময় স্মরণ যে, তারা সঠিক হতে পারে।
মার্কজে

220

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

আপনি যদি তা দ্রুত বুঝতে পারেন - এটি পাঠযোগ্য।


28
হ্যাঁ, এটি ভাল লাগছে (এবং সত্য) তবে আজ / কীভাবে করবেন তা সিদ্ধান্ত নেওয়ার পক্ষে এটি খুব ভাল পন্থা নয় ...
মাইকেল ডুরান্ট

10
ব্যবচ্ছেদ প্রস্তাব দেওয়া এটি একটি সময় নিচ্ছে এবং আপনি এটি সাবধানে করতে হবে ...
deworde

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

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

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

94

এটাই:

  1. রক্ষণীয় যদি আপনি এটি বজায় রাখতে পারে
  2. অন্য কেউ যদি আপনাকে সহায়তা না চেয়ে এটিকে বজায় রাখতে পারে তবে সহজেই রক্ষণযোগ্য
  3. পাঠযোগ্য যদি অন্য কেউ , পড়ার সময়, ডিজাইন, লেআউট এবং উদ্দেশ্যটি সঠিকভাবে বুঝতে পারে

১ এর আসল পরীক্ষাটি হ'ল ( প্যারিসে অ্যালেক্স যেমন এবং কোয়ান্ট_দেব বলে) যে আপনি কয়েক মাস অন্য কিছু করার পরে এটি আবার নিতে পারবেন।

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

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


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

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

30

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

এটা কি পাঠযোগ্য? এটি পড়ুন। পদ্ধতি এবং পরিবর্তনশীল নামগুলি কী বোঝায়? আপনি কোন সমস্যা ছাড়াই প্রোগ্রাম লজিক অনুসরণ করতে পারেন? উত্তরটি যদি হ্যাঁ হয় তবে কোডটি পঠনযোগ্য।


8
... এবং আপনি এটি পড়ার পরে পড়ার চেষ্টা করার জন্য এটি অন্য কারও হাতে দিন।
jcmeloni

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

1
"যদি উত্তর হ্যাঁ হয়, তাহলে কোড পাঠযোগ্য" ... দ্বারা আপনি । এটি অন্যের কাছে পাঠযোগ্য কিনা তা দেখতে, অন্যদের অবশ্যই এটি পড়ার চেষ্টা করতে হবে।

2
IMO, SOLID ওভাররেটেড। বিশেষত 'এস' এটি বা প্রত্যেকেই এটির ভুল ব্যাখ্যা করে।
এরিক রেপেন

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

24

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

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

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

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

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


আরও দেখুন জলপ্রপাত ২০০6.com/gorman.html অপসারণকে কোডটি একটি সুনির্দিষ্ট ডিজাইনের প্রক্রিয়া গ্রহণ করার প্রক্রিয়া এবং, নিজেকে বাদ দিয়ে অন্য কারও দ্বারা একেবারেই অবিশ্বাস্য করে তোলা, ছোট ছোট বিপরীতমুখী পরিবর্তনের একটি সিরিজের মাধ্যমে।
সোজর্ড

22

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

তালিকাটি চেকলিস্টে সক্ষম হওয়ার জন্য খুব বড়, তবে আপনি বইটি পড়েন এবং কাজ করার জন্য কয়েকটি মূল জিনিস বেছে নেন, তারপরে আরও কয়েক মাস পরে আরও পড়ার জন্য এটি আবার পড়ুন।



19

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

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


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

1
@ হারমানইংজালডসন - যথেষ্ট ফর্সা। অবশ্যই যদি তারা সক্ষম না হয় এবং কিছু কিছু না ভেঙে যায় তবে আপনি খুব শীঘ্রই এটি সম্পর্কে শুনতে পাবেন। "এর জন্য সহায়তা !!!!"
ম্যাথট্যাক

এই নিছক পুনরাবৃত্তি কি বিবৃত হয়েছিল বলে মনে হয় উপরের উত্তর
মশা

17

আমি সমস্ত উত্তর পড়েছি, এবং আমি লক্ষ্য করেছি যে কোডের জটিলতার কথা কেউ উল্লেখ করেনি।

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

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

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

ম্যাককেব যেখানে নীচে পড়ে তবে সেই উদাহরণটি পরে রয়েছে। যদি আমার শর্ত ছাড়াই 300 লাইনের কোড পাওয়া যায় তবে আমি "অনুলিপি / পেস্ট পুনঃব্যবহার" করেছি এবং সত্যিই এটি খুব ভাল জিনিস নয় there's সুতরাং ম্যাককেব ছাড়াও এমন সিস্টেম-ব্যাপী মেট্রিকগুলি প্রয়োগ করা হয় - যেমন সদৃশ বা নিকট-সদৃশ কোড সনাক্তকরণ।


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

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

8

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

  • কোড পুনরায় ব্যবহার করা সহজ
  • আপনার কোড নমনীয় (মডিউলগুলিতে বিল্ডিংয়ের সাথে এই সম্পর্কগুলি)
  • DRY - নিজেকে পুনরাবৃত্তি করবেন না

আমি প্রাগমেটিক প্রোগ্রামার, পড়ার জন্য অত্যন্ত পরামর্শ দিচ্ছি।


8

কিছু পরীক্ষা / সূচক:

  • আইডিই বন্ধ করুন। আপনি এখনও নিজের কোড পড়তে পারেন? যখন কোনও বাগ রয়েছে তখন হাত দিয়ে এটি সন্ধান করা এবং সমস্যাটি কোথায় তা নির্ধারণের জন্য আপনার কোন ব্রেকপয়েন্টের দরকার হবে তা নির্ধারণ করা মোটামুটি সহজ? বা আপনি যখন আইডিই ব্যবহার করেন তখন আপনি কি খুব মাথা ঘামান না এবং শুরু থেকেই পা রাখেন?

  • ডিবাগগুলি কি প্রায়শই ওয়াক-এ-মোলের খেলায় পরিণত হয় যেখানে একটি বাগ ফিক্সিং করা 2+ আরও তৈরি করে।

  • ট্রিগার টান থেকে শুরু করে দরকারী কিছু ঘটছে, এটি কতটি পদ্ধতি কল গ্রহণ করে? কতগুলি পদ্ধতি অন্য একই পদ্ধতিতে সঠিক বা একই একই পরামিতিগুলির বেশিরভাগটি পাস করে?

  • একটি ক্লাসে কেবল একটি নতুন নতুন পদ্ধতি যুক্ত করতে আপনার কতগুলি ফাইল খুলতে হবে?

  • আপনি গ্রহণ করেছেন এমন নিদর্শন এবং অনুশীলনগুলির বিষয়ে চিন্তা করুন। তারা সঠিক ধারণা তৈরি করার কারণে বা কেউ আপনাকে নিশ্চিত করেছে যে "এটি করার একমাত্র উপায়"? বা কারণ আপনি এটি আপনার জীবনবৃত্তান্তে চেয়েছিলেন বা কিছু রকস্টার স্ট্যান্ডার্ড তাই বলেছিল।


3
আইডিইবিহীন কোড পড়ার বিষয়টি খাঁটি মনে হয়, বিশেষত পাঠযোগ্যতার পরিমাপ হিসাবে। এই ধরণের মেট্রিকের ফলাফল হাঙ্গেরিয়ান স্বরলিপি শৈলীর "সমাধানগুলি" যা শেষ পর্যন্ত পাঠযোগ্যতা হ্রাস করে।
রুবেনভিবি

8

কেউ কীভাবে জানতে পারে যে তার তৈরি কোডটি সহজেই রক্ষণাবেক্ষণযোগ্য এবং পঠনযোগ্য?

এই বৈশিষ্ট্যগুলি অনুসন্ধান করে আপনি বজায় রাখা সহজ এবং পাঠযোগ্য কোড স্পট করতে পারেন:

  1. অবজেক্টস, পদ্ধতি এবং / অথবা ফাংশন সর্বদা একটি জিনিস করে।
  2. পদ্ধতি এবং / অথবা ফাংশনগুলি সংক্ষিপ্ত (যেমন "সংক্ষিপ্ত তবে ব্যাপক" হিসাবে রয়েছে)।
  3. অবজেক্টস, পদ্ধতি এবং / অথবা ফাংশনগুলি তাদের নামের উপর ভিত্তি করে আপনি যা ভাবেন বলে মনে করেন সেগুলি মূলত তা করে।
  4. পুনরায় ব্যবহারের জন্য নির্ধারিত কোডটি আসলে পুনরায় ব্যবহারযোগ্য।
  5. সর্বশেষে তবে অন্ততঃ যদি আপনি তাৎক্ষণিকভাবে কোডটি ইউনিট-টেস্ট করতে পারেন তবে আপনি সম্ভবত একক-দায়বদ্ধতা, খুব কমপক্ষে মডুলার কোড লিখেছেন।

আমরা কীভাবে জানব যে আমরা যদি খুব অগোছালো এবং অব্যর্থনীয় কোড লিখেছি? আমরা অগোছালো সফ্টওয়্যার বিকাশ করেছি কিনা তা জানতে কি কোনও গঠন বা নির্দেশিকা রয়েছে?

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

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

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

কোনও জিনিস কীভাবে একটি জিনিস করতে পারে?
কোরে তুগায়

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

6

এককথায়, অভিজ্ঞতা

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

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

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


3

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

এটি পড়ার জন্য অত্যন্ত সহজ।

var recentTopCustomers = OrderList
    .Where(o => o.Date >= DateTime.Now.AddDays(-5))
    .Where(o => o.Amount > 1000)
    .OrderBy(o => -o.Amount)
    .Take(10)
    .Select(o => o.Customer);

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


2

পঠনযোগ্য এবং রক্ষণাবেক্ষণযোগ্য কোড: কোড যা প্রথম দর্শনের পরে একজন প্রোগ্রামার সহজেই সক্ষম হবার জন্য যথেষ্ট ভালভাবে বুঝতে পারে:

  • এটির ইন্টারফেসের মাধ্যমে পুনরায় ব্যবহার করুন বা
  • এটি ডিবাগ করুন, বা
  • তার আচরণ পরিবর্তন করুন। (কোনও বৈশিষ্ট্য যুক্ত / সরান), বা or
  • এটি অনুকূলিতকরণ
  • এটা পরীক্ষা করো

এটি 'স্পষ্টতা' এ ফোটে। অর্থাৎ প্রোগ্রামারকে কোনও নির্দিষ্ট বিভাগের কোডের কতগুলি প্রশ্ন জিজ্ঞাসা করতে হবে তা নিশ্চিত হওয়ার আগেই তারা অপ্রত্যাশিত পার্শ্ব-প্রতিক্রিয়া সৃষ্টি না করেই বর্তমান কাজটি হাতে পেতে 'এটি যথেষ্ট পরিমাণে কী করে তা বুঝতে পারে'।

স্টিভ ম্যাককনেল রচিত 'কোড কমপ্লিট' বইটি এর বিশদ বিবরণে এসেছে।

তিনি বিভিন্ন মেট্রিকের মধ্য দিয়ে যান যা আপনি কোডটি ভাল মানের কিনা তা নির্ধারণ করতে ব্যবহার করতে পারেন।

এখানে একটি উদাহরণ দেখুন: http://books.google.co.uk/books?id=3JfE7TGUwvgC&lpg=PT376&pg=PT389#v=onepage&q&f=false


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

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

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

2

পার্শ্ব প্রতিক্রিয়া হ্রাস করুন (আদর্শ কোনও নেই)

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

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

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

অতিরিক্ত অতিরিক্ত বহিরাগত নির্ভরতা এড়িয়ে চলুন

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

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

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

এটি থেকে ক্র্যাপ আউট পরীক্ষা করুন

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

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

ইন্টারফেস ডকুমেন্টেশন

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

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

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

সুপাঠ্যতা

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

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


1

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


1

আমি ব্যবহার করতে চাই একটি কৌশল এখানে:

আপনার পিয়ার প্রোগ্রামারগুলির মধ্যে একটিতে কোডটি দেখান এবং এটি কী করে তা আপনাকে তা বোঝাতে বলুন। এই জিনিসগুলির জন্য দেখুন।

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


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

এই নিছক পুনরাবৃত্তি কি বিবৃত হয়েছিল বলে মনে হয় উপরের উত্তর
মশা

-1

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

  • DRY সর্বোচ্চ করুন।

দ্বিতীয়ত, রক্ষণাবেক্ষণের জন্য লুকানো নির্ভরতাগুলির চেয়ে খারাপ আর কিছুই নেই। 2 নম্বর নিয়মের জন্য:

  • আপনার সমস্ত নির্ভরতা সুস্পষ্ট করুন।

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

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

ফ্রন্ট-এন্ড: জুনিয়র ডেভস, এড়ানোর জন্য কড়া স্টাইল গাইড এবং টেকনিকের ভাষা নির্মান এবং আইডিয়ামগুলি ব্যবহার করুন। মিডিয়র ডেভসরা এই কোডটি ডিআরওয়াই সুযোগ এবং লুকানো ব্যবসার যুক্তি সন্ধান করবে।

সুতরাং নিয়ম 3 নম্বর জন্য:

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

আমি


1
এই কিছু সারগর্ভ প্রস্তাব উপর পয়েন্ট হয়েছে এবং পূর্বে 25 উত্তর ব্যাখ্যা বলে মনে হচ্ছে না
মশা

@ জাগ্রত, আমি অন্যান্য উত্তরে 'সম্ভাব্য ক্ষতিকারক' ওভারসিম্প্লিফিকেশনগুলিতে 'উপদ্রব' যুক্ত করার আশা করছিলাম। বিশেষত 3 পয়েন্ট সহ
ব্যবহারকারী 1703394

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

-2

পঠনযোগ্য এবং সহজেই বজায় রাখতে সক্ষম কোডটি লেখার পক্ষে এটি কখনও সহজ নয়, তবে সহজ ও রক্ষণাবেক্ষণযোগ্য কোডটি লেখা শক্ত নয়।

OOAD চারটি অক্ষরের শব্দ তবে একসাথে বুঝতে অসুবিধা হয় - অবজেক্ট ওরিয়েন্টেড অ্যানালাইসিস অ্যান্ড ডিজাইন অনুসরণ করুন

  1. সর্বদা একটি ভাল প্রয়োজন সংগ্রহ এবং সঠিক সমস্যা বিবৃতি দিয়ে শুরু করুন

    • কয়েকটি ব্যবহারের ক্ষেত্রে যেমন শুরু করুন; সিস্টেম-ব্যবহারকারীর কথোপকথন ইন্টারঅ্যাকশন
  2. আপনাকে আপনার অবজেক্টগুলি আলগাভাবে মিলিয়ে রাখতে হবে এবং আপনার কোডটি পুনরাবৃত্তি করবে না তা নিশ্চিত করতে হবে - ডিআরওয়াই অনুসরণ করুন [নিজেকে পুনরাবৃত্তি করবেন না]

    • যে কোনও সময় আপনি কোনও সদৃশ দেখতে পাবেন, শিবিরের জন্য কোনও স্থান সন্ধান করুন
  3. আপনার কোডটি এক্সটেনশনের জন্য উন্মুক্ত এবং সংশোধনের জন্য বন্ধ - ওসিপি [ওপেন-বদ্ধ নীতি]
  4. আপনি যখন নিজের কোডটি পরিবর্তন করেন সর্বদা মনে রাখবেন - সমস্যাগুলি সমাধান করার জন্য সমস্যা তৈরি করবেন না, আইটি সরলভাবে আপনার বিদ্যমান কার্যকারিতাটি পরিবর্তন করে না ify
  5. ইউনিট আপনার কোড পরীক্ষা করুন
    • যখন জিনিসগুলি ভুল হয় সর্বদা আপনার কোডটি পরীক্ষা করুন
  6. কার্যকারিতা নিয়ে কাজ করার সময় সর্বদা আপনার অ্যাপ্লিকেশনটি শুরু থেকেই ভালভাবে নকশা করা হয়েছে তা নিশ্চিত করার জন্য বেসিক ওওপি (অবজেক্ট ওরিয়েন্টেড নীতিগুলি) এবং কৌশলগুলি অনুসরণ করতে ভুলবেন না
    • বস্তুগুলির নামটি যা বোঝায় তাই করা উচিত
    • প্রতিটি বস্তুর একটি একক ধারণা উপস্থাপন করা উচিত
  7. সিস্টেমের সমস্যা বিবৃতিটি সর্বদা মনে রাখবেন এবং কোন প্রসঙ্গে / ডোমেন সফ্টওয়্যার কাজ করে
  8. কিছু কাগজের কাজও কর - হ্যাঁ এটি আমার পক্ষে কাজ করে
    • ইউআই সম্পর্কিত কিছু প্রিন্টআউট এবং ইউএমএল ডায়াগ্রাম সবসময় কাজ করে
    • এমনকি হোয়াইট বোর্ড থেকে বুদ্ধিদীপ্ত অধিবেশনটির স্ক্রিন শটও পেতে পারেন
  9. আর্কিটেকচার লেআউট
  10. সম্ভব হলে নকশার নীতি প্রয়োগ করুন
  11. নথিপত্র
    • সর্বদা আপনার কোড নথি
    • আইডিইতে ইন্ডেন্টেশন সেট করুন এবং এটিও নথিতে

1
এটি এমন তত্ত্ব যা আমরা কীভাবে কোডের মানকে মাপ দিতে বা পরিমাপ করব না তার জবাব দেয় না যাতে আমরা এটি পাঠযোগ্য, বোধগম্য এবং বজায় রাখতে সক্ষম জানি? প্রশ্ন
জানু ডগজেন

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

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