আপনি কি মনে করেন কোডটি স্ব নথিভুক্ত? [বন্ধ]


24

এটি এমন একটি প্রশ্ন যা বহু বছর আগে আমার কাছে একটি কাজের সাক্ষাত্কারে গ্রেডুয়েট হিসাবে রাখা হয়েছিল এবং এটি আমার মস্তিষ্কে এখন এবং বার বার ঝাঁকুনি খায় এবং আমি সত্যিই কখনও এমন উত্তম উত্তর পাইনি যা আমাকে সন্তুষ্ট করেছিল।

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

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


6
আমি হ্যাঁ বা কোনও উত্তর থেকে শিখি না, আমি এমন প্রশ্নের কালো বা সাদা উত্তর জিজ্ঞাসা করে শিখি। আমার উত্তর হবে না। কাজ।
mouviciel

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

1
@ নিম - আরও প্রায়শই মন্তব্য ইত্যাদি ছাড়াও , তবে মন্তব্যটি +1 করুন।
স্টিভ 314

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

1
@ স্টিভ, আমি আশা করি এমন ঘটনা ঘটেছে .. <দীর্ঘশ্বাস />
নিম

উত্তর:


50

আংশিকভাবে।

বিগ ইংলিশ শব্দ ব্যবহার করে এমন কোডটি আংশিকভাবে স্ব-ডকুমেন্টিং হতে পারে যাতে সমস্ত ফাংশন এবং ভেরিয়েবলের নাম আপনাকে বলতে পারে যে এটি কী করছে। তবে সম্ভবত এটি আপনাকে বলবে না।

তুলনা করা:

a->b;
# what is b doing? what is the a object?

carEngine->startIgnition;
# much more clear what objects are involved

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


7
+1 টি কোড ব্যাখ্যা করেছেন যে কি ঘটছে তা এখনো ব্যাখ্যা করতে পারেন না কেন এটা যে পথ (এবং অন্য কোন উপায়ে) ঘটছে।
হতাশ

24
+1 আমি বিশ্বাস করি যে স্ব-ডকুমেন্টিং কোডটি কি করা উচিত বনাম মন্তব্যগুলি কী করা উচিত তার সেরা সংজ্ঞা। কোড আপনাকে সর্বদা পরিষ্কারভাবে 'কী' এবং মন্তব্যগুলি আপনাকে 'কেন' বলা উচিত tell
ড্যান ম্যাকগ্রা

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

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

4
আপনি যদি জানতেন যে গাড়িটি কেন শুরু করা হয়েছিল তবে যদি সেই বিবৃতিটি ইনিশিয়েটকমিউটটো ওয়ার্ক () বা স্টার্টপ্রেসেসেসেন্স () নামে পরিচিত হয়।
পেমদাস

33

নং কোড নিজে থেকে ডকুমেন্টিং হয় না।

কারণ যে কোড রাজ্যের হয় কীভাবে এবং যত্ন সম্পর্কে না কেন যা কি মানুষের অর্ডার কোড বজায় রাখার জন্য জানা প্রয়োজন হয়।

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


1
++ অবিকল। মন্তব্যগুলি কেন এবং কীভাবে তার মধ্যে একটি লিঙ্ক হওয়া উচিত।
মাইক ডুনলাভে

4
মন্তব্যগুলি জবাব দেওয়ার জন্য জোর দেওয়ার জন্য +1, কী বা কীভাবে নয়।
ওস্টারওয়াল

এই উত্তর দিয়ে প্রশ্নটি বোঝায় (৮০% অংশ নয়)।
ব্যবহারকারী অজানা

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

ধন্যবাদ, সত্যিই কেন বনাম কীভাবে এই জোর, ঠিক এখন, 2 বছর প্রোগ্রামিংয়ের পরে, আমাকে মন্তব্য কোডের উদ্দেশ্যটি শিখিয়েছে।
রাফায়েল এমশফ 16

7

সঠিক কোড আপনাকে " কীভাবে " বলে দেয় । যথাযথ মন্তব্য আপনাকে বলতে " কেন "

সুতরাং কোডগুলি কীভাবে জিনিসগুলি অর্জন করা যায় সেভাবে স্ব-ডকুমেন্টিং হতে পারে তবে আপনি এটি ধরে নিতে পারবেন না কারণ এটির কারণটি রয়েছে।


6

যদি তারা কোনও কালো এবং সাদা উত্তরটির উপর জোর না দিয়ে মাঝের জমিটি দেয় তবে উত্তরটি হ'ল না।

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

কোডের সর্বাধিক তুচ্ছ বিষয় ছাড়া অন্য যে কোনও কিছু অন্তত বাইরের ডকুমেন্টেশন থেকে উপকৃত হতে পারে।


5

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

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

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

মন্তব্য করার যোগ্যতা এবং অসুবিধাগুলি সম্পর্কে একটি আকর্ষণীয় কথোপকথনের জন্য , আমি পুরানো কথোপকথনের অংশ ছিলাম সেই জন্য http://www.perlmonks.org/index.pl?node_id=65153 দেখুন । (দ্রষ্টব্য, আমাদের সেই কথোপকথনটি একই সাথে হয়েছিল, সেখানে একটি ব্যক্তিগত আড্ডার বন্ধুত্বপূর্ণ সেট ছিল I আমি সর্বদা আফসোস করেছি যে কথোপকথনের আরও নেতিবাচক অর্ধেকটিই পাবলিক) , তবে আমি এখনও মনে করি যে কথোপকথনের চিন্তার জন্য উপযুক্ত খাবার রয়েছে।


1
"ডকুমেন্টেশনের ভুলগুলি ছেড়ে যাওয়ার প্রবণতা রয়েছে" এর জন্য +1, যদিও এটি সত্যিই যথেষ্ট যায় না। এটি আরও অনেকটা "ডকুমেন্টেশনের ভুলগুলি বছরের পর বছর পর্যন্ত লক্ষ্য করা যায় না যখন কেউ লক্ষ্য করে যে তারা কোডটির সাথে মেলে না"।
ল্যারি কোলম্যান

5

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

একটি আদর্শ বিশ্বে নিম্নলিখিত বিবৃতি দেওয়া যেতে পারে:

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

ঠিক আছে, এটি যথেষ্ট ন্যায্য, তবে সমস্যাটি হ'ল আমরা একটি আদর্শ বিশ্বে বাস করি না। এই আদর্শ বিবৃতি অর্জনের সাথে কিছু সমস্যা রয়েছে।

  1. প্রোগ্রামাররা প্রায়শই যে শিল্পের বিরুদ্ধে প্রোগ্রামিং করেন সেই বিশেষজ্ঞের বিশেষজ্ঞ হন না। কোনও ফাংশন বুঝতে এটি যথেষ্ট সহজ যেমন startEngine(Car car)(সর্বাধিক) প্রত্যেকে এখানে কী জিজ্ঞাসা করা হচ্ছে তা বুঝতে পারে। তবে আসল বিশ্বে চলে যান এবং জিনিসগুলি কিছুটা অদ্ভুত হয়। উদাহরণস্বরূপ ফাংশনটি getSess(String tid, String aid)ট্রান্সপোর্ট ইঞ্জিনিয়ারের কাছে পুরোপুরি বোধগম্য হবে যারা ডিডাব্লুডিএম সিস্টেমগুলি বোঝে, তবে এটি নতুন প্রোগ্রামারকে একটি চ্যালেঞ্জ উপস্থাপন করতে পারে যা কেবলমাত্র প্রকল্পটিতে রাখা হয়েছে। ভালভাবে দেওয়া মন্তব্যগুলি সময়মতো কোড বোঝার লক্ষণটি সহজ করতে সহায়তা করে।

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

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

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

সুন্দরভাবে লেখা, "স্ব-ডকুমেন্টিং" কোডটি খুঁজে পেয়ে আনন্দ। সুন্দরভাবে লেখা, "আত্ম-দলিল" কোড, সঙ্গে ভাল স্থাপিত, তথ্যপূর্ণ মন্তব্য একটি সফলতা, এবং একটি খুব বিরল খোঁজ নেই।


4

প্রাথমিক প্রশ্নের প্রতিটি দিক থেকে কেবল যুক্তি দিতে:

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

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

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


4

স্পষ্টতই তিনি নুথের রীতিতে শিক্ষিত প্রোগ্রামার ছিলেন । কোনও এলপি শিষ্যের কাছে কোডটি বৈধ হওয়ার জন্য স্ব-ডকুমেন্টিং হতে হবে। সুতরাং একমাত্র সম্ভাব্য উত্তর হ্যাঁ "হ্যাঁ"।

এখানে সমস্যাটি হ'ল এখানে অনেকগুলি সাক্ষরিত প্রোগ্রামিং ভাষা নেই এবং এমন কোনও বিস্তৃত বাণিজ্যিক ব্যবহার সম্পর্কে আমি জানি না। সুতরাং এটি কোথাও একটি কুলুঙ্গি অবস্থান হতে হবে।


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

3

আমি বিবেচনা করি সাক্ষাত্কারকারীর জন্য যা খুঁজছিল তা হ'ল: "আপনি কীভাবে স্ব নথিপত্র কোড লিখবেন?" "ডকুমেন্টেশনের প্রতি আপনার দৃষ্টিভঙ্গি কী?"

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

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

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

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

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


3

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


2

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

তাই হ্যাঁ কোড স্ব-ডকুমেন্টিং। এটি কতটা ডকুমেন্টেড তা সম্পূর্ণরূপে অন্য একটি প্রশ্ন।


2

আমি যেহেতু আরও অভিজ্ঞ হয়ে উঠছি, আমি শিখেছি যে আসল উত্তরটি হ'ল কোড প্লাসের পাঠকের পরিবেশটি স্ব-ডকুমেন্টেশনের স্তর নির্ধারণ করে।

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


++ যদি পাঠকের পরিবেশের দ্বারা আপনি বোঝাতে চেয়ে থাকেন যে পাঠকটি ডোমেন এবং প্রোগ্রামিং কৌশলগুলি সম্পর্কে কতটা জানেন তবে আমি আপনার সাথে 100% আছি।
মাইক ডুনলাভে

ডোমেন, কৌশল, সেই ভাষা পড়ার ক্ষমতা - এগুলি সব।
পল নাথান

2

আমি জানি যে বেশিরভাগ লোকেরা এই প্রশ্নের প্রত্যাশার উত্তরটি "না" হবে তবে আমি হ্যাঁ বলব। যদি আমাকে কোনও কাজের জন্য একটি সাক্ষাত্কারে জিজ্ঞাসা করা হয়, তবে আমি হ্যাঁ বলব।

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

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


2

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

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


2

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


+1 টি। কোডটি লেখার জন্য খুব স্বল্প সময়ের জন্য পঠনযোগ্যতার দিকটিই লেনদেন হয়। অনুশীলনে কোড লেখার চেয়ে পড়াতে বেশি সময় ব্যয় হবে।
Schedler

1

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

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

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

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

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