ন্যূনতম সময় পর্যালোচনার জন্য আমি কীভাবে আমার কোড নথি করব? [বন্ধ]


22

আমি আমার কোডটি এমনভাবে নথিভুক্ত করতে চাই যে কয়েক মাস পরে আবার কোডটি পড়ার এবং ব্রাউজ করার জন্য নূন্যতম প্রয়োজন হয়।

আমি জানি যে বিভিন্ন ধরণের ডকুমেন্টেশন রয়েছে (উত্স কোড এবং বাইরের, সিকোয়েন্স ডায়াগ্রামে এবং আরও কিছু)।

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


42
পরে কম সময় পড়ার কোড ব্যয় করার সর্বোত্তম পদ্ধতি হ'ল পরিষ্কার এবং আরও বোধগম্য কোড লিখুন।
মেইল


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

@ লাইভ আমার নিজের কোড এবং সম্ভবত অন্যান্য বিকাশকারী কোডের বিকাশকারীর দৃষ্টিতে।
হামেদ_গিবাগো

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

উত্তর:


16

আমাকে অবশ্যই স্বীকার করতে হবে যে অন্যান্য উত্তরগুলি প্রস্তাবিত কিছু জিনিসের সাথে আমি একমত নই, তাই আমি আমার দুটি সেন্ট নিক্ষেপ করতে যাচ্ছি;

মন্তব্য

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

সম্পাদনা করুন : মন্তব্য বিভাগে আলোচনাটি সঠিক কিছু নির্দেশ করেছে - খারাপ কোড লেখার সময় সাধারণত অতিরিক্ত মন্তব্য করা হয় ।

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

def login(username: str, password: str, create_session: bool = True):

    # Filter the user we need from the database
    hash = md5(password)
    users = db.table("users", db_entities.USER)
    results = [x for x in users.query(lambda c: c.get("username") == username and c.get("password_hash") == hash)]


    if len(results) == 0:
        return None, None
    else:
        # Create a login session record in the database.
        if create_session:
            sessions = db.table("sessions", db_entities.SESSION)
            ses = sessions.new()
            ses.set("username", username) \
                .set("expiery", 31536000 + time.time())
            sessions.update(ses)
            return results[0], ses
        else:
            return results[0], None

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

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

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

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

হ্যাঁ, মন্তব্যগুলি যা স্পষ্ট জিনিসগুলি ব্যাখ্যা করে, अस्पष्ट মন্তব্যগুলি, মন্তব্যগুলি যা "এই কোডটি নথিভুক্ত, হ্যাঁ, যাই হোক না কেন", কোড গন্ধ কিনা তা নিশ্চিত করার জন্য সবেমাত্র একত্র করা হয়েছিল। তারা কোড পড়া আরও কঠিন এবং বিরক্তিকর করে তোলে। (নীচে একটি উদাহরণ যোগ করা)

# Logging into Gmail when the module is imported
_client = login()
def get_client():
    global _client
    return _client

উদাহরণ স্পষ্টকরণ: "কোন ছিটেফেলা, শার্লক। _client = login()মেল পরিষেবাটিতে লগইন করে না? ওএমজি!"

আরও স্পষ্টতা: উপরোক্ত উদাহরণ থেকে পদ্ধতির login()কোনও পদ্ধতির কোনও সম্পর্ক নেই login()

তবে যে মানগুলি মানগুলির সাথে মিলে যায়, কেন তা কীভাবে হয় না তা ব্যাখ্যা করুন এবং সঠিক প্রশ্নের উত্তর দিন খুব কার্যকর ( খুব ) সহায়ক।

ইনলাইন মন্তব্য

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

উদাহরণস্বরূপ, খারাপ ইনলাইন মন্তব্য:

outer = MIMEText(details["message"]) # Constructing a new MIMEText object
outer["To"] = details["to"] # Setting message recipient
outer["From"] = "xAI No-Reply" # Setting message sender
outer["Subject"] = details["subject"] # Setting message subject
outer.preamble = "You will not see this in a MIME-aware mail reader.\n" # I don't know what I'm doing here, I copied this from SO.
msg = outer.as_string() # Getting the string of the message
_client = details["client"] # Assigning the client
_client.sendmail(SENDER, details["to"], msg) # Sending the mail

মন্তব্যগুলি ছাড়াই এই কোডটি পড়া এবং বুঝতে খুব সহজ হবে, যা এটিকে অগোছালো এবং অপঠনযোগ্য করে তোলে।

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

# Constructing the email object with the values 
# we received from the parameter of send_mail(details)
outer = MIMEText(details["message"])
outer["To"] = details["to"]
outer["From"] = "xAI No-Reply"
outer["Subject"] = details["subject"]
outer.preamble = "You will not see this in a MIME-aware mail reader.\n"
msg = outer.as_string()

# Sending the mail using the global client (obtained using login())
_client = details["client"]
_client.sendmail(SENDER, details["to"], msg)

অনেক পরিষ্কার, তাই না? এখন আপনি এটিও জানেন যে আপনাকে login()ফাংশনটি ব্যবহার করতে হবে এবং send_mail()আপনার ব্যবহৃত সমস্ত কিছু দিয়ে প্যারামিটার সরবরাহ করতে হবে । কিছুটা সহায়তা করে তবে একটি জিনিস এখনও অনুপস্থিত।

ফাংশন ডকুমেন্টেশন

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

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

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


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

6
অবশেষে কিছুটা বিচক্ষণতা। কোডের প্রতিটি টুকরোটি বের করা যা তার নিজস্ব ফাংশনে কোনও মন্তব্য ব্যবহার করতে পারে তা হল কীভাবে আপনি শত শত ফাইল জুড়ে হাজার হাজার ফাংশন সমাপ্ত করবেন।
ব্যবহারকারী369450

2
দ্বিতীয় দ্বিতীয়টি সুন্দর ly
মনিকা

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

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

55

আইএমও সেরা ডকুমেন্টেশন হ'ল ডকুমেন্টেশন যা আপনার আসলে প্রয়োজন হয় না। আমি ডকুমেন্টেশন এবং মন্তব্য লেখার ঘৃণা করি।

এর সাথে বলা হচ্ছে:

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

19
ডকুমেন্টেশনের জন্য এখানে একটি ভাল মেট্রিক (বাধ্যতামূলক লিঙ্ক)।
নীল

4
এটিও তালিকায় থাকা উচিত: আপনি কেন কাজ করছেন তা কেন কোডে ব্যাখ্যা করুন ।
t3chb0t


4
numberOfItemsFoundযদিও বেশ ভার্জোজ; খুব বাগাড়ম্বরপূর্ণ হয় এছাড়াও একটি বিষয়।
ম্যাথিউ এম।

6
@ ম্যাথিউইউএম।, কোডে নাম সহ খুব কমই "খুব ভার্জোজ" " খুব বেশি পোড়া বা ক্রিপ্টিক যদিও খুব সাধারণ সমস্যা।
ডেভিড আরনো

25

আপনার কোডটিকে দলিল হিসাবে বিবেচনা করুন

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

পঠনযোগ্য কোড কীভাবে লিখবেন সে সম্পর্কে অনেকগুলি লেখা আছে তবে কয়েকটি মূল বিষয় হ'ল:

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

পড়ার কোডে আরও ভাল হয়ে উঠুন

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

মন্তব্যগুলি একটি কোড গন্ধ

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

অটোজেনারেটেড এপিআই ডকুমেন্টেশন থেকে সাবধান থাকুন

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

টেস্টগুলিও ডক্স

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

ছবিগুলি আঁকুন যদি এটি সাহায্য করে

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

একটি "1000 ফিট" দস্তাবেজ আছে

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


14
আমি আপনার সমস্ত বক্তব্যের সাথে একমত, ব্যতীত মন্তব্যগুলির স্থান নেই। আমি মতামত দেওয়ার মত মতামত করার কোন মানে নেই, কোড কেন এটি করে তা কেনadd 1 to i মন্তব্যে তা বোঝানো উচিত । উদাহরণ হিসেবে বলা যায়, কোড মত একটি মন্তব্য ব্যবহার করতে পারেন: । if (!something.Exists()) {...}// something exists only when (explanation of the broader scenario)
জোনাথন

16
আমরা সকলেই আমাদের // increment x x++;মন্তব্যগুলির ন্যায্য অংশটি দেখেছি যা কোনও লাভজনক নয়, তবে শিশুটিকে স্নানের জল দিয়ে ফেলে দেওয়া এবং মন্তব্য করা সর্বদা খারাপ বলে ভুল। উদাহরণস্বরূপ, ফর্ম মন্তব্য // this case should never happen because xyz throw exception "unreachable"
রাগান্বিত

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

16
@ ডেভিড আর্নো তবে কিছু করা হয়নি কেন তা ব্যাখ্যা করার জন্য আপনি এটি করতে পারবেন না । ভালো লেগেছে //XXX: Not using straight-forward method Foo here because ...। এই জাতীয় মন্তব্য অপরিসীম মূল্যবান হতে পারে তবে সুস্পষ্ট কারণে কোড সহ প্রকাশ করা অসম্ভব।
মাস্টার -

7
আমি এটি আরও নাটকীয় পছন্দ করি: প্রতিটি মন্তব্য কোডে নিজেকে ভালভাবে প্রকাশ করতে ব্যর্থ । উদাহরণস্বরূপ, আমার কাছে একটি পদ্ধতিতে 4 টি লাইন মন্তব্য রয়েছে, 3 য় পক্ষের বাগের জন্য কাজের ব্যাখ্যাটি। আমি কোডে এটি ভালভাবে প্রকাশ করতে ব্যর্থ হয়েছি, তাই এটি একটি মন্তব্যে । আমি বলব এটি পাঠযোগ্যতার শক্তিকে উন্নত করেছে, কারণ আমি সন্দেহ করি যে খুব দীর্ঘ এবং খুব বর্ণনামূলক পদ্ধতির নাম পড়তে যে কেউ অনুভূমিকভাবে স্ক্রোলিং উপভোগ করবে । "মন্তব্যগুলি একটি কোডের গন্ধ" - হ্যাঁ, তবে আমাদের মনে রাখতে হবে যে যা কিছু গন্ধযুক্ত তা sh * t নয়।
আর স্মিটজ

5

একটি কভার লেটার সরবরাহ করুন

আপনি যদি খুব প্রযুক্তিগত ডোমেইনে না থাকেন তবে কোডের চারপাশে বেশিরভাগ প্রশ্নগুলি 'কীভাবে' নয় তবে 'কেন' বা 'কী' সম্পর্কে হবে।

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

লোকেরা প্রযুক্তিগত হলেও, কভার লেটারে কোথায় কোনও কিছুর সন্ধান করা উচিত সে সম্পর্কে দিকনির্দেশনা দেওয়া উচিত।

সাধারণ অত্যন্ত সংক্ষিপ্ত পয়েন্টগুলি:

  1. ভূমিকা, কেন এই কোড (বেস) বিদ্যমান
  2. কোড সাবসেটটি কী কার্য সম্পাদন করে
  3. কোডটি কোথায় (উদাহরণস্বরূপ স্ক্রিপ্টের নাম)

উদাহরণ

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

1

আমি সাধারণত পৃথক প্রতিশ্রুতি তৈরির মাধ্যমে সবচেয়ে বড় গতি লাভ করি যে প্রত্যেকে সংস্থাপিত ও কাজ করে এমন একটি মধ্যবর্তী পদক্ষেপের প্রতিনিধিত্ব করে।

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

এটি পর্যালোচনা করা সহজ, কারণ খাঁটি যান্ত্রিক পরিবর্তনগুলি দ্রুত ঝলকানো হতে পারে এবং তারপরে বেরিয়ে যেতে পারে।

একইভাবে, আপনি কোডটি পুনরায় ফর্ম্যাট করেন, এটি সর্বদা পৃথক কমিট হওয়া উচিত।


1

যদিও বিদ্যমান উত্তরের মধ্যে মতবিরোধের এক বা দুটি আপত্তিজনক বিষয় রয়েছে, তবে কেবলমাত্র জোর দেওয়া হলে, আমি সাধারণত পরামর্শটি এমনভাবে সংক্ষিপ্ত করার চেষ্টা করব যেটা স্পষ্ট করে দেয় যে প্রত্যেকে কোথা থেকে আসছেন:

  1. প্রথমত, পরিষ্কার কোড লিখুন; অন্য কোনও "ডকুমেন্টেশন" এর পরে নিজের যত্ন নেবে। ক্লিন কোড হ'ল নীতিগুলির সম্পূর্ণ সেটটি প্রথম স্থানে শেখার জন্য: একক-দায়বদ্ধ ক্লাস, সংক্ষিপ্ত পদ্ধতি যা একটি কাজ করে, ভাল ভেরিয়েবল এবং পদ্ধতির নাম, রূপকগুলিতে ফোকাস করে এর চেয়ে আরও ভাল শ্রেণি / প্রকারের নাম (যেমন একটি মাল্টিবটসপোর্টারকে কল করুন সোডা), প্রয়োজনীয়তাগুলি নির্দেশ করতে ইউনিট পরীক্ষাগুলি, ডিআরওয়াই, সলিড, একটি সামঞ্জস্যপূর্ণ দৃষ্টান্ত এবং আরও।
  2. কোড কীভাবে কোড কাজ করে তা প্রকাশ করে; মন্তব্য কোড কেন কাজ করে তা প্রকাশ করে। উদাহরণস্বরূপ, "1 টি ত্রুটি দ্বারা একটি প্রতিরোধ করে", বা "এই পাঠ্যপুস্তক বা ওয়েবপৃষ্ঠায় উত্পন্ন" সহ কিছু জটিল সূত্র সহ একটি +1 ব্যাখ্যা করুন।
  3. আপনি মন্তব্য সহ যা যা করছেন, উপরের পয়েন্ট 1 ভাল কোডটি অর্জন করতে পারে। ব্যর্থতা / প্রয়োজনীয় মন্দ হিসাবে মন্তব্যগুলি দেখুন বা সময়ের সাথে সাথে তারা কোডের সাথে সিঙ্কের বাইরে চলে গেলে উভয়ই সম্পাদিত হয়। মন্তব্যগুলি খারাপভাবে লিখিত কোডের জন্য ক্ষতিপূরণ দেওয়া উচিত নয়, কারণ কোডের চেয়ে মন্তব্যগুলি কেন আরও বেশি প্রতিভা বা যত্ন নিয়ে লেখা হবে?

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


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

@ জিরকাহানিকা সম্ভবত বাই-ওয়ান একটি খারাপ উদাহরণ ছিল। 3 হিসাবে, আমি যা বোঝাতে চেয়েছি তা "সম্ভবত প্রতিটি" এর চেয়ে "প্রতিটি মে" হতে পারে; সুতরাং না, আমি মনে করি না কোড একা এই জাতীয় বিষয়গুলি পরিষ্কার করতে পারে। (ঠিক আছে, আপনি ভেরিয়েবলের নাম হিসাবে গাউসিয়ানফ্রমটিসটিেক্সটবুকনাম অ্যাপপ্রক্সিমেশন চেষ্টা করতে পারেন, তবে এটি একটি খারাপ ধারণা!)
জেজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.