CodeGym /جاوا بلاگ /Random-UR /جاوا تبصرے
John Squirrels
سطح
San Francisco

جاوا تبصرے

گروپ میں شائع ہوا۔
تبصرے ایک ایسے پروگرام کا حصہ ہیں جس پر عمل نہیں کیا گیا ہے۔ مرتب کرنے والا صرف تبصروں کو نظر انداز کرتا ہے کیونکہ ان کا مقصد اس کے لیے نہیں ہے۔ وہ "انسانی" زبان میں لکھے گئے ہیں اور ان کا مقصد پروگرام، پروگرام کا حصہ، ڈویلپرز یا ترقی میں شامل لوگوں کے لیے ایک لائن یا طریقہ کی وضاحت کرنا ہے۔ اکثر، تبصرے انگریزی میں لکھے جاتے ہیں، یہ ایک روایت کی طرح ہے۔ اس مضمون میں، ہم جاوا میں تبصروں کے بارے میں بات کرنے جا رہے ہیں اور آپ اور آپ کے ساتھی ساتھیوں کی زندگی کو آسان بنانے کے لیے ان کا صحیح استعمال کیسے کریں۔

جاوا تبصرے: وہ کیوں اہم ہیں۔

ان کا کہنا ہے کہ جب ان کے اپنے کوڈ پر تبصرہ کرنے کی بات آتی ہے تو پروگرامرز انتہائی سست ہوتے ہیں۔ تاہم، یہ ایک بہت اہم ہنر ہے، لہذا اسے کم نہ سمجھیں، چاہے آپ ابھی جاوا سیکھنا شروع کر رہے ہوں۔ اچھی طرح سے تبصرہ کردہ کوڈ بغیر تبصرے کے کوڈ سے کہیں زیادہ قیمتی ہے کیونکہ اس طرح کے پروگرام کو برقرار رکھنا بہت آسان ہے۔ چونکہ بڑے پروجیکٹ اکثر جاوا میں لکھے جاتے ہیں، اس لیے قابل تبصرہ بھی ترقی کو تیز کرتا ہے، کیونکہ پروگرامر کے لیے دوسرے لوگوں کے کوڈ سے نمٹنا آسان ہوتا ہے۔ اس کے لیے تبصرے درکار ہیں:
  • کوڈ کو سمجھیں۔ آپ کا یا کسی اور کا۔ اگر آپ کو لگتا ہے کہ آپ کو اپنے کوڈ کو سمجھنے کی ضرورت نہیں ہے کیونکہ آپ نے اسے لکھا ہے، تو ایک نسبتاً پیچیدہ پروگرام کھولنے کی کوشش کریں جو آپ نے ایک ماہ پہلے یا اس سے بھی پہلے لکھا تھا اور جلدی سے سمجھیں کہ آپ کے ذہن میں کیا، کہاں اور کیوں تھا۔ تبصرے کسی پروگرام یا پروگرام کے بلاک کی منطق کی وضاحت کے لیے استعمال کیے جا سکتے ہیں، ساتھ ہی ان لوگوں کے لیے سفارشات چھوڑ سکتے ہیں جو بعد میں آپ کے کوڈ کے ساتھ کام کریں گے۔ اس قسم کے تبصرے کو وضاحتی کہا جا سکتا ہے۔

  • اشیاء کے مقصد، ان پٹ اور آؤٹ پٹ پیرامیٹرز (اگر کوئی ہے)، ڈویلپر کے بارے میں ڈیٹا، اور کوڈ کے ٹکڑے سے متعلق دیگر اہم چیزوں کے بارے میں معلومات پر مشتمل ہے۔ اس طرح کے تبصرے ماڈیولز، لائبریریوں، طریقہ کار اور فنکشنز کے ہیڈرز میں موجود ہوتے ہیں۔ انہیں دستاویزی تبصرے کہا جا سکتا ہے۔

  • کیڑے کو کنٹرول کریں اور کوڈ کو بہتر بنائیں۔ قابل اعتراض کوڈ یا کوڈ جس میں بہتری کی ضرورت ہے اس پر ہمیشہ تبصرہ کیا جا سکتا ہے اور بعد میں دوبارہ دیکھا جا سکتا ہے۔ اگر آپ کو یہ محسوس ہوتا ہے کہ کسی خاص مسئلے کو مختلف طریقے سے حل کیا جا سکتا ہے، لیکن اب آپ کے پاس اس کے لیے وقت نہیں ہے، تو اس خیال کو کمنٹ میں لکھیں۔ دوسری صورت میں، زیادہ تر امکان ہے، نئے کوڈ کے دباؤ کے تحت، آپ اس کے بارے میں بھول جائیں گے.

جاوا میں تبصروں کی اقسام

اس حقیقت کے باوجود کہ آپ تبصروں میں کچھ بھی اور سب کچھ لکھ سکتے ہیں، جاوا میں کچھ قسم کے تبصرے ہیں اور انہیں استعمال کرنے کے اصول ہیں۔ جاوا تبصروں میں سرد ہو:
  • سنگل لائن تبصرے
  • ملٹی لائن کمنٹس
  • دستاویزی تبصرے

سنگل لائن تبصرے

جاوا کے سب سے عام تبصرے سنگل لائن کمنٹس ہیں۔ اس طرح کے تبصرے کی نشاندہی کرنے کے لیے، متن سے پہلے ڈبل سلیش لگانا کافی ہے // ۔ سنگل لائن تبصرے صرف تبصرے کے شروع میں جھنڈے لگتے ہیں۔ تبصرہ لائن کے آخر تک جاری ہے۔ نحو:
//here is a single line comment.
آئیے اس قسم کے جاوا تبصروں کی ایک مثال لیتے ہیں:
public class CommentsDemo1 {
   public static void main(String[] args) {
       System.out.println("This text is visible for Java compiler");
       //this text is single line comment
//This one is also single line comment
//they both (and me) are invisible for compiler
   }
}
آؤٹ پٹ ہے:
یہ متن جاوا کمپائلر کے لیے نظر آتا ہے۔
عام طور پر ایک سطری تبصرہ پروگرام میں تبصرے کی جگہ کے اوپر یا نیچے ہوتا ہے، کبھی کبھار اسی لائن پر۔ یہ ضروری ہے کہ یہ بصری طور پر واضح ہو کہ تبصرہ کس طرف اشارہ کرتا ہے۔

ملٹی لائن تبصرے

کبھی کبھی جاوا تبصرہ لکھنے کے لیے ایک لائن کافی نہیں ہوتی ہے۔ مثال کے طور پر، آپ کو یہ بتانے کی ضرورت ہے کہ کوئی طریقہ کیسے کام کرتا ہے یا ایک پیچیدہ فارمولہ جسے آپ لاگو کر رہے ہیں۔ اس صورت میں، آپ کئی ایک سطری تبصرے لکھ سکتے ہیں، لیکن نام نہاد کثیر سطری تبصرے لکھنا زیادہ معقول ہوگا۔ ان پر دونوں طرف نشانیاں ہیں /* */ ۔ کثیر سطری تبصروں کی ترکیب:
/*This comment
is
Multi line comment
we can describe here
what we need */
آئیے کوڈ میں ملٹی لائن کمنٹس کی مثال دیتے ہیں۔
public class RleTest {

   /*
   Run Length Encoding (RLE),  a data compression algorithm
   that replaces repeated characters (series)
   with one character and the number of its repetitions.

   this method is to decode a String using run-length encoding

    */
   private static String decodeRle(String encoded) {
       if (encoded.isBlank()) return "";
       StringBuilder result = new StringBuilder();
       int count = 0;
       char baseChar = encoded.charAt(0);
       for (int i = 1; i <= encoded.length(); i++) {
           char c = i == encoded.length() ? '$' : encoded.charAt(i);
           if (Character.isDigit(c)) {
               count = count * 10 + Character.digit(c, 10);
           } else {
               do {
                   result.append(baseChar);
                   count--;
               } while (count > 0);
               count = 0;
               baseChar = c;
           }
       }
       return result.toString();
   }
   public static void main(String[] args) {
       System.out.println(decodeRle("C3ecddf8"));
   }
}

جاوا دستاویزی تبصرے

یہ ایک خاص قسم کے جاوا تبصرے ہیں جو دستاویزی صفحہ بنانے کے لیے استعمال ہوتے ہیں۔ عام طور پر ڈویلپر جاواڈاک کا استعمال کرتے ہوئے دستاویزات کے تبصرے لکھتے ہیں، جاوا سورس کوڈ سے HTML فارمیٹ میں API دستاویزات بنانے کے لیے ایک دستاویزی جنریٹر۔ Javadoc کی طرف سے استعمال کردہ دستاویزات کا فارمیٹ جاوا کلاسز کو دستاویز کرنے کے لیے صنعتی معیار ہے اور سب سے زیادہ مقبول IDEs جیسے IntelliJ IDEA اور Eclipse، خود بخود Javadoc HTML تیار کرتے ہیں۔ جاوا دستاویزات کے تبصروں میں ذیل میں نحو ہے:
/**
Some important Javadoc comments here
You don’t know it yet, but Javadoc rulez

@author  Java Developer
*/
یہاں ایک مثال ہے: یہ جاوا شارٹ کلاس کا ایک ٹکڑا ہے۔ ویسے، آپ اپنے IDE سے کسی بھی جاوا کلاس کوڈ کو دیکھ سکتے ہیں (مثال کے طور پر ونڈوز سے IntelliJ IDEA میں کسی بھی کلاس یا طریقہ کے نام پر صرف ctrl+LBM یا ctrl+b (ونڈوز میں) دبائیں)۔
package java.lang;

import jdk.internal.HotSpotIntrinsicCandidate;
import jdk.internal.misc.VM;

/**
* The {@code Short} class wraps a value of primitive type {@code
* short} in an object.  An object of type {@code Short} contains a
* single field whose type is {@code short}.
*
* <p>In addition, this class provides several methods for converting
* a {@code short} to a {@code String} and a {@code String} to a
* {@code short}, as well as other constants and methods useful when
* dealing with a {@code short}.
*
* @author  Nakul Saraiya
* @author  Joseph D. Darcy
* @see     java.lang.Number
* @since   1.1
*/
public final class Short extends Number implements Comparable<Short> {

   /**
    * A constant holding the minimum value a {@code short} can
    * have, -2<sup>15</sup>.
    */
   public static final short   MIN_VALUE = -32768;

   /**
    * A constant holding the maximum value a {@code short} can
    * have, 2<sup>15</sup>-1.
    */
   public static final short   MAX_VALUE = 32767;

   /**
    * The {@code Class} instance representing the primitive type
    * {@code short}.
    */
   @SuppressWarnings("unchecked")
اس طرح کے تبصرے کے ساتھ تمام نوزائیدہوں کے ذریعہ مشہور اور پسند کرنے والا جاوا کوڈ یہ ہے println() طریقہ:
/**
* Prints a String and then terminate the line.  This method behaves as
* though it invokes {@link #print(String)} and then
* {@link #println()}.
*
* @param x  The {@code String} to be printed.
*/
public void println(String x) {
   if (getClass() == PrintStream.class) {
       writeln(String.valueOf(x));
   } else {
       synchronized (this) {
           print(x);
           newLine();
       }
   }
}
Javadoc میں کچھ خاص Javadoc ٹیگز ہیں جن پر @ کے ساتھ نشان لگا دیا گیا ہے آپ اوپر کوڈ میں دیکھ سکتے ہیں۔ اس طرح کے Javadoc ٹیگ کی مثال @author ہے جس میں کلاس مصنف کا نام شامل ہوتا ہے۔ ایک اور Javadoc ٹیگ @ چونکہ یہ ایک تبصرہ شامل کرتا ہے جس سے ظاہر ہوتا ہے کہ یہ کلاس جاوا کے مخصوص ورژن کے بعد سے استعمال کی گئی ہے۔ اچھی Javadoc دستاویزات لکھنے کے لیے علم اور تجربہ (اور صبر!) کی ضرورت ہوتی ہے۔ آپ Javadoc کے بارے میں سرکاری دستاویزات میں مزید معلومات حاصل کر سکتے ہیں Javadoc Tool کے لیے Doc Comments کیسے لکھیں ۔

PS حقیقی زندگی سے کچھ مضحکہ خیز تبصرے مثالیں۔

/**
*Dear Maintainer
*
*Once you are done trying to 'optimize' this routine,
*and you have realized what a terrible mistake that was,
*please increment the following counter as a warning
*to the next guy.
*
*total_hours_wasted_here = 73
*/
Exception up = new Exception("Something is really wrong.");
throw up;  //ha ha
// When I wrote this, only God and I understood what I was doing
// Now, God only knows
// sometimes I believe compiler ignores all my comments
/**
Always returns true.
*/
public boolean isAvailable() {
return false;
}
جو کچھ آپ نے سیکھا ہے اس کو تقویت دینے کے لیے، ہمارا مشورہ ہے کہ آپ ہمارے جاوا کورس سے ایک ویڈیو سبق دیکھیں
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION