আমি ডকুমেন্টেশনের জন্য এক্সএমএল মন্তব্যগুলির প্রয়োজনের অনুরাগী হয়ে থাকতাম। আমি তখন থেকে দুটি প্রধান কারণে আমার মন পরিবর্তন করেছি:
- ভাল কোডের মতো, পদ্ধতিগুলি স্ব-বর্ণনামূলক হওয়া উচিত।
- অনুশীলনে, বেশিরভাগ এক্সএমএল মন্তব্যগুলি অকেজো শব্দ যা কোনও অতিরিক্ত মান দেয় না।
অনেক সময় আমরা জেনেরিক মন্তব্যগুলি উত্পন্ন করার জন্য কেবল ঘোস্টডক ব্যবহার করি এবং অকেজো শব্দের অর্থ এই:
/// <summary>
/// Gets or sets the unit of measure.
/// </summary>
/// <value>
/// The unit of measure.
/// </value>
public string UnitOfMeasure { get; set; }
আমার কাছে, এটা সুস্পষ্ট। এই বলে যে, যদি অন্তর্ভুক্ত করার জন্য বিশেষ নির্দেশনা থাকত তবে আমাদের একেবারে এক্সএমএল মন্তব্যগুলি ব্যবহার করা উচিত।
আমি এই নিবন্ধ থেকে এই অংশটুকু পছন্দ :
কখনও কখনও, আপনি মন্তব্য লিখতে হবে। তবে, এটি ব্যতিক্রম হওয়া উচিত নিয়ম নয়। মন্তব্যগুলি কেবল তখনই ব্যবহার করা উচিত যখন তারা এমন কিছু প্রকাশ করে যা কোডে প্রকাশ করা যায় না। আপনি যদি মার্জিত কোডটি লিখতে চান তবে মন্তব্যগুলি মুছে ফেলার চেষ্টা করুন এবং পরিবর্তে স্ব-ডকুমেন্টিং কোড লিখুন।
কোডটি নিজে থেকে নিজেই ব্যাখ্যা করার জন্য পর্যাপ্ত না হলে আমাদের কেবল এক্সএমএল মন্তব্য ব্যবহার করা উচিত তা ভাবতে ভুল হয়?
আমি বিশ্বাস করি এটি একটি ভাল উদাহরণ যেখানে এক্সএমএল মন্তব্যগুলি সুন্দর কোডটিকে কুৎসিত করে তোলে। এটি একটি ক্লাস লাগে ...
public class RawMaterialLabel : EntityBase
{
public long Id { get; set; }
public string ManufacturerId { get; set; }
public string PartNumber { get; set; }
public string Quantity { get; set; }
public string UnitOfMeasure { get; set; }
public string LotNumber { get; set; }
public string SublotNumber { get; set; }
public int LabelSerialNumber { get; set; }
public string PurchaseOrderNumber { get; set; }
public string PurchaseOrderLineNumber { get; set; }
public DateTime ManufacturingDate { get; set; }
public string LastModifiedUser { get; set; }
public DateTime LastModifiedTime { get; set; }
public Binary VersionNumber { get; set; }
public ICollection<LotEquipmentScan> LotEquipmentScans { get; private set; }
}
... এবং এটি এ পরিণত:
/// <summary>
/// Container for properties of a raw material label
/// </summary>
public class RawMaterialLabel : EntityBase
{
/// <summary>
/// Gets or sets the id.
/// </summary>
/// <value>
/// The id.
/// </value>
public long Id { get; set; }
/// <summary>
/// Gets or sets the manufacturer id.
/// </summary>
/// <value>
/// The manufacturer id.
/// </value>
public string ManufacturerId { get; set; }
/// <summary>
/// Gets or sets the part number.
/// </summary>
/// <value>
/// The part number.
/// </value>
public string PartNumber { get; set; }
/// <summary>
/// Gets or sets the quantity.
/// </summary>
/// <value>
/// The quantity.
/// </value>
public string Quantity { get; set; }
/// <summary>
/// Gets or sets the unit of measure.
/// </summary>
/// <value>
/// The unit of measure.
/// </value>
public string UnitOfMeasure { get; set; }
/// <summary>
/// Gets or sets the lot number.
/// </summary>
/// <value>
/// The lot number.
/// </value>
public string LotNumber { get; set; }
/// <summary>
/// Gets or sets the sublot number.
/// </summary>
/// <value>
/// The sublot number.
/// </value>
public string SublotNumber { get; set; }
/// <summary>
/// Gets or sets the label serial number.
/// </summary>
/// <value>
/// The label serial number.
/// </value>
public int LabelSerialNumber { get; set; }
/// <summary>
/// Gets or sets the purchase order number.
/// </summary>
/// <value>
/// The purchase order number.
/// </value>
public string PurchaseOrderNumber { get; set; }
/// <summary>
/// Gets or sets the purchase order line number.
/// </summary>
/// <value>
/// The purchase order line number.
/// </value>
public string PurchaseOrderLineNumber { get; set; }
/// <summary>
/// Gets or sets the manufacturing date.
/// </summary>
/// <value>
/// The manufacturing date.
/// </value>
public DateTime ManufacturingDate { get; set; }
/// <summary>
/// Gets or sets the last modified user.
/// </summary>
/// <value>
/// The last modified user.
/// </value>
public string LastModifiedUser { get; set; }
/// <summary>
/// Gets or sets the last modified time.
/// </summary>
/// <value>
/// The last modified time.
/// </value>
public DateTime LastModifiedTime { get; set; }
/// <summary>
/// Gets or sets the version number.
/// </summary>
/// <value>
/// The version number.
/// </value>
public Binary VersionNumber { get; set; }
/// <summary>
/// Gets the lot equipment scans.
/// </summary>
/// <value>
/// The lot equipment scans.
/// </value>
public ICollection<LotEquipmentScan> LotEquipmentScans { get; private set; }
}