CodeGym /جاوا بلاگ /Random-UR /انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ
John Squirrels
سطح
San Francisco

انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ

گروپ میں شائع ہوا۔
ایک پروگرامنگ زبان بولی جانے والی زبان سے بہت ملتی جلتی ہے۔ فرق صرف اتنا ہے کہ یہ ایک خاص زبان ہے جس کا بنیادی مقصد کمپیوٹر کے ساتھ بات چیت کو آسان بنانا ہے تاکہ کمپیوٹر کو سمجھا سکے کہ ہم اسے کیا کرنا چاہتے ہیں۔ لیکن آپ کمپیوٹر کے ساتھ ذاتی گفتگو نہیں کر سکتے۔ جب آپ نے پروگرامنگ لینگویج سیکھنا شروع کی تو آپ نے کتابوں یا کچھ تعلیمی وسائل جیسے CodeGym کو دیکھا۔ اور اس وسائل نے آپ کو کوڈ دکھایا جسے کمپیوٹر سمجھتا ہے۔ لیکن آپ کو بھی اسے سمجھنا چاہیے جیسا کہ آپ جاوا زبان کے بارے میں سیکھتے ہیں۔ کسی بھی زبان کی طرح، پروگرامنگ میں کچھ فارمیٹنگ کنونشنز کو اپنایا گیا ہے۔ مثال کے طور پر، شائستہ معاشرے میں، wRiTiNg LiKe ThIs کو برا آداب سمجھا جائے گا۔ اور جاوا میں، کسی طریقے کا نام بڑے حرف سے شروع کرنا کوڈنگ کنونشنز کی سراسر خلاف ورزی ہے۔ جاوا کوڈ کے قوانین جاوا پروگرامنگ لینگویج کے لیے انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 1 دستاویز کوڈ کنونشنز میں دیے گئے ہیں ۔ کوڈنگ کنونشن چھوٹی تفصیلات کو بھی ریگولیٹ کر سکتے ہیں، جیسے انڈینٹیشن۔ بالکل ڈراؤنے خواب کا تصور کریں کہ ورژن کنٹرول بن جائے گا اگر انڈینٹیشن متضاد تھا، کچھ لوگ ٹیب استعمال کرتے ہیں اور دوسرے لوگ خالی جگہ استعمال کرتے ہیں۔ کسی ایسے شخص کے لیے کیسا ہوگا جسے صرف ایک طریقہ میں درست کرنے کی ضرورت ہے، لیکن خالی جگہوں اور ٹیبز میں فرق کی وجہ سے پوری فائل کو تبدیل کر دیا گیا ہے؟ بلاشبہ، عام زبان کی طرح، کنونشنز اس بات پر منحصر ہو سکتے ہیں کہ زبان کہاں استعمال ہوتی ہے۔ مثال کے طور پر، ویب کے وسیع پیمانے پر، آپ گوگل جاوا اسٹائل گائیڈ اور ٹویٹر جاوا اسٹائل گائیڈ تلاش کرسکتے ہیں ۔ اس جائزے کے لیے، ہمیں ایک امتحانی مضمون کی ضرورت ہے۔ ہم گریڈل بلڈ آٹومیشن سسٹم استعمال کریں گے۔ یہ ہمیں ٹیمپلیٹ سے ایک نیا پروجیکٹ بنا کر تیزی سے شروع کرنے دے گا۔ گریڈل کے پاس بہت اچھا پلگ ان ہے: Init پلگ ان بنائیں ۔ آئیے ایک نئی ڈائریکٹری میں جائیں اور وہاں درج ذیل کمانڈ کو چلائیں: اس کے بعد، IntelliJ IDEA شروع کریں۔ اگر آپ کو کھلی پروجیکٹ والی ونڈو نظر آتی ہے (یعنی آپ کو کوڈ ایڈیٹر اور پروجیکٹ ٹری نظر آتے ہیں) تو اس پروجیکٹ کو استعمال کرکے بند کریں ۔ اب خوش آمدید ونڈو میں، " " چلائیں اور ہمارا نیا پروجیکٹ درآمد کریں۔ درآمد کرتے وقت، " " چیک باکس سیٹ کریں۔ آئیے معلوم کریں کہ کیا ہم زندگی کو آسان بنانے کے لیے جدید ترین ترقیاتی ٹولز استعمال کر سکتے ہیں۔ gradle init --type java-applicationFile -> Close ProjectImport ProjectUse autoimport

IDEA میں کوڈ فارمیٹنگ

پروجیکٹ درآمد کرنے کے بعد، Ctrl+N دبائیں اور AppTestکلاس میں جائیں۔ یہ ڈیفالٹ ٹیسٹ کلاس ہے۔ ایسا لگتا ہے:
import org.junit.Test;
import static org.junit.Assert.*;

public class AppTest {
    @Test public void testAppHasAGreeting() {
        App classUnderTest = new App();
        assertNotNull("app should have a greeting", classUnderTest.getGreeting());
    }
}
فوری طور پر آپ کی آنکھ کو کیا پکڑتا ہے؟ طریقہ کے اعلان کے طور پر ایک ہی لائن پر ایک تشریح، جو بدصورت نظر آتی ہے، ٹھیک ہے؟ اسے کیسے ٹھیک کیا جائے؟ IntelliJ IDEA میں Codeمختلف کوڈ ہیرا پھیری کے لیے " " مینو انٹری ہے۔ ایسا ہی ایک ہیرا پھیری ہے " Reformat Code"، جسے آپ Ctrl+L استعمال کر کے اپلائی کر سکتے ہیں۔ ایسا کرنے کے بعد، تشریح ایک لائن پر ہوگی، اور طریقہ کا اعلان دوسری لائن پر ہوگا۔ یہ فوری طور پر قابل غور ہے کہ یہ آپریشن فی الحال منتخب کردہ کوڈ پر کیا جاتا ہے ۔ اگر کوئی انتخاب نہیں ہے، تو فارمیٹنگ آپریشن ہر چیز پر کیا جاتا ہے۔ اب ایک نیا ٹیسٹ طریقہ شامل کریں:
@Test
public void testSumOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	Integer result = data.stream().filter(number -> number % 2 == 0).reduce((n1, n2) -> n1 + n2).get();
	assertThat(result, is(12));
}
اور دو درآمدات:

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
جیسا کہ آپ دیکھ سکتے ہیں، سٹریم پر آپریشن ایک لائن پر ہے۔ لیکن کیا ہوگا اگر ہم اس بات کو یقینی بنانا چاہتے ہیں کہ ہر پیریڈ آپریٹر پر زنجیروں والی میتھڈ کالز ہمیشہ نئی لائنوں میں تقسیم ہوں؟ ہم یہ دستی طور پر کر سکتے ہیں۔ لیکن یاد رکھیں کہ ہم چاہتے ہیں کہ سب کچھ خود بخود ہو جائے۔ درحقیقت، ہم وقتاً فوقتاً دستی قدم کو بھول جائیں گے، اور پھر ہم ہر جگہ مختلف فارمیٹنگ کے ساتھ ختم ہو جائیں گے، اور یہ کوئی اچھی بات نہیں ہے۔ لہذا ہمیں اس اصول میں ترمیم کرنے کی ضرورت ہے جو IDEA فارمیٹنگ کے لیے استعمال کرتا ہے۔ File -> SettingsIDEA مینو میں منتخب کریں (یا Ctrl+Alt+S دبائیں)۔ سیٹنگز ونڈو میں سرچ فیلڈ میں "کوڈ اسٹائل" درج کریں۔ "کوڈ سٹائل" سیکشن میں، آپ جاوا سے زیادہ زبانوں کے لیے سیٹنگز بتا سکتے ہیں۔ لیکن جاوا وہی ہے جس میں ہمیں ابھی دلچسپی ہے۔ جیسا کہ آپ دیکھ سکتے ہیں، ترتیبات کو کئی ٹیبز میں تقسیم کیا گیا ہے۔ ایک انتہائی مفید خصوصیت یہ ہے کہ آپریشن کی ایک مثال ونڈو کے دائیں حصے میں دکھائی گئی ہے: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 2اسکرین شاٹ ظاہر کرتا ہے کہ ہم "زنجیروں والی میتھڈ کالز" کو "ہمیشہ لپیٹنے" پر سیٹ کر سکتے ہیں، یعنی ہمیشہ زنجیروں والی میتھڈ کالز کو الگ الگ لائنوں میں تقسیم کریں۔ اب ٹیسٹ کلاس میں فارمیٹنگ کے بٹن پر دوبارہ کلک کریں اور ہم دیکھتے ہیں کہ یہ واقعی کام کرتا ہے! لیکن بعض اوقات آپ کو فارمیٹنگ کے معیاری اصولوں سے ہٹ کر کچھ کوڈ فارمیٹ کرنے کی ضرورت ہوتی ہے۔ فارمیٹنگ کو اس طرح ترتیب دیں: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 3فارمیٹنگ کو روکنے کے لیے، "کوڈ اسٹائل" سیکشن میں، فارمیٹر مارکر کو فعال کریں: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 4اب ہم اپنی ٹیسٹ کلاس کو تبدیل کر سکتے ہیں تاکہ اس کا کوڈ دوبارہ فارمیٹ نہ ہو:
@Test
public void testSumOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	// @formatter:off
	Integer result = data.stream().filter(number -> number % 2 == 0)
                             .reduce((n1, n2) -> n1 + n2)
                             .get();
	assertThat(result, is(12));
	// @formatter:on
}
آپ نے دیکھا ہوگا کہ جب آپ Tab کو دباتے ہیں، تو IDEA اسے ایک اسپیس سے تعبیر کرتا ہے (یہ ڈیفالٹ رویہ ہے)۔ لیکن آپ اسے " Code Style" سیکشن میں تبدیل کر سکتے ہیں: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 5جیسا کہ آپ دیکھ سکتے ہیں، وہاں بہت سی ترتیبات موجود ہیں۔ Code styleآپ ترتیبات کے بارے میں مزید تفصیلات یہاں پڑھ سکتے ہیں : " IDEA مدد: کوڈ اسٹائل "۔ فارمیٹنگ کی ایک اور اہم خصوصیت ہے: فارمیٹنگ درآمدات۔ یہ آپریشن الگ سے چلایا جاتا ہے اور اسے " Optimize Imports" کہا جاتا ہے۔ یہ Code -> Optimize Imports(Ctrl+Alt+O) کے نیچے واقع ہے۔ درآمدات کو بہتر بنانا غیر ضروری درآمدات کو ہٹاتا ہے اور جاوا کی ترتیبات Importsکے " " ٹیب میں ترتیبات کے مطابق درست ترتیب میں درآمدات کو ترتیب دیتا ہے۔ Code Styleمزید کیا ہے، اگر آپ چاہتے ہیں کہ یہ فارمیٹنگ خود بخود ہو جائے، تو اچھی خبر ہے: یہ Save Actions پلگ ان کا استعمال کرکے پورا کیا جا سکتا ہے۔

کمانڈ میں ترتیبات کی تقسیم

ہم نے اوپر دیکھا کہ آپ اپنی فارمیٹنگ کے انداز کو اپنی مرضی کے مطابق بنا سکتے ہیں۔ لیکن آپ اس انداز کو ٹیم میں کیسے استعمال کرتے ہیں؟ بہت آسانی سے۔ کئی اختیارات ہیں۔ سب سے آسان کوڈ اسٹائل اسکیم کو محفوظ کرنا ہے۔ IDEA کی ترتیبات کھولیں File -> Settings(یا Ctrl+Alt+S دبائیں)۔ " Code Style" سیکشن میں، ہم "سکیم" دیکھ سکتے ہیں۔ یہ ہماری فارمیٹنگ اسکیم ہے۔ پہلے سے طے شدہ طور پر، "ڈیفالٹ" اسکیم کا استعمال کیا جاتا ہے اور اس پر "IDE" کا لیبل لگایا جاتا ہے، جس کا مطلب ہے کہ یہ ترتیب صرف ہمارے IDE پر لاگو ہوتی ہے — یہ کسی اور کو متاثر نہیں کرتی ہے۔ "کسٹم" اسکیم بنانے کے لیے، کاپی بنانے کے لیے دائیں جانب کے بٹن کا استعمال کریں اور اسے ایک نام دیں، مثال کے طور پر: CodeGym انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 6پھر یہ کہ ہم ترتیبات کو درآمد یا برآمد کرسکتے ہیں: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 7 دوسرا آپشن IDEA کی ترتیبات کو درآمد کرنا ہے: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 8تیسرا آپشن ہے۔ ترتیبات کا ذخیرہ۔ سیٹنگز ریپوزٹری کو استعمال کرنے کے لیے، درج ذیل لنک پر مزید تفصیلات کے لیے IntelliJ IDEA ہیلپ دستاویزات دیکھیں: سیٹنگز ریپوزٹری "۔ کسی ٹیم پر متحد انداز کو آگے بڑھانے کی بات کرتے ہوئے، میں بھی مدد نہیں کر سکتا لیکن چاند گرہن سے اسٹائلز کے لیے اچھے تعاون کا ذکر نہیں کر سکتا۔ IDE۔ ایسا کرنے کے لیے، آپ کو ایک الگ پلگ ان انسٹال کرنے کی ضرورت ہے: فائل -> سیٹنگز (Ctrl+Alt+S) کے ذریعے IDEA سیٹنگز کھولیں اور "Plugins" سیکشن میں جائیں۔ نئے پلگ انز تلاش کرنے کے لیے، " " بٹن پر کلک کریں۔ Browse Repositoriesپھر سرچ ونڈو میں ایکلیپس کوڈ فارمیٹر پلگ ان تلاش کریں۔ انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 9اسے انسٹال کرنے کے بعد، آپ کو IDEA کو دوبارہ شروع کرنا پڑے گا - یہ معیاری طریقہ کار ہے۔ اب سب کچھ ہو چکا ہے۔ IDEA کی ترتیبات میں ایک نیا سیکشن ہے: "Eclipse Code Formatter"۔ Eclipse فارمیٹ کی فائل یہاں مل سکتی ہے ۔ یہ کچھ اس طرح نظر آئے گا: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 10

سخت تقاضے

IDEA ٹولز کے علاوہ، آپ ضروریات کو سخت کرنے کے لیے بلڈ آٹومیشن پلگ ان بھی استعمال کر سکتے ہیں۔ ایسا کوئی طریقہ نہیں ہے کہ آپ دستی طور پر چیک کر سکیں کہ کسی نے مناسب فارمیٹنگ کا استعمال کیا ہے۔ ہوسکتا ہے کہ آپ ٹیم میں 5 لوگوں کے ساتھ ہوسکیں۔ لیکن ایک کمپنی میں 100 افراد کے ساتھ، یہ حقیقت پسندانہ نہیں ہے۔ اور یہاں تک کہ پانچ کو ٹریک کرنا مشکل ہوگا۔ اور اس میں سے کسی پر اپنا وقت کیوں ضائع کریں؟ اگر قواعد کی خلاف ورزی کی جائے تو منصوبے کو تعمیر ہونے سے روکنا بہت آسان ہوگا۔ درحقیقت یہ ایک مکمل علیحدہ موضوع ہے جسے "انسپیکٹ کوڈ" کہا جاتا ہے۔ اس مضمون میں، میں صرف آپ کو دکھانا چاہتا ہوں کہ یہ کیسے کام کرتا ہے۔ سب سے مشہور گریڈل پلگ ان میں سے ایک (کیونکہ یہ ہمارا پروجیکٹ بناتا ہے، آپ کو یاد ہوگا) pmd ہے ۔ اسے فعال کرنے کے لیے، صرف ہمارے گریڈل پروجیکٹ کی بلڈ اسکرپٹ پر جائیں (ہمارے پروجیکٹ کی جڑ میں build.gradle فائل) اور باقی پلگ انز کے ساتھ اس میں pmd شامل کریں:
plugins {
    // Apply the java plugin to add support for Java
    id 'java'
    // Check source code
    id 'pmd'
    // Apply the application plugin to add support for building an application
    id 'application'
}
اب ہم اسی جگہ پر مزید تفصیلی ترتیبات درج کر سکتے ہیں:
pmd {
    ignoreFailures = false
    pmdTest.enabled = true
    ruleSets = [
            'java-basic',
            'java-braces',
            'java-clone',
            'java-codesize',
            'java-comments',
            'java-controversial',
            'java-coupling',
            'java-design',
            'java-empty',
            'java-finalizers',
            'java-imports',
            'java-optimizations',
            'java-strictexception',
            'java-strings',
            'java-typeresolution',
            'java-unnecessary',
            'java-unusedcode'
    ]
}
ہمارا پراجیکٹ بھی اب ٹوٹ چکا ہے۔ چلائیں gradle buildاور ہمیں ایک غلطی ملتی ہے۔ اچھی بات یہ ہے کہ تعمیر کے دوران ایک رپورٹ تیار کی جاتی ہے۔ اور اگر غلطیاں ہیں، تو ہمیں اس طرح کا پیغام ملتا ہے:
BUILD FAILED in 35s
6 actionable tasks: 6 executed
7 PMD rule violations were found. See the report at: file:///C:/_study/codestyle/build/reports/pmd/main.html
رپورٹ پر جائیں تو ہمیں کچھ اس طرح نظر آتا ہے: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 11مزید یہ کہ، " Problem" کالم pmd پلگ ان کی ویب سائٹ پر مسئلے کی تفصیل کا لنک فراہم کرتا ہے۔ مثال کے طور پر، " headerCommentRequirement Required" خرابی کے لیے، لنک یہاں جاتا ہے: pmd — CommentRequired ۔ یہ غلطی اس بات کا اشارہ ہے کہ ہماری کلاس میں JavaDoc نہیں ہے۔ ہم کلاسوں کے اوپر جاوا ڈوک کو ترتیب دینے کے لیے ٹیمپلیٹس کا استعمال کر سکتے ہیں: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 12اور مندرجات کی وضاحت کریں File Header: انٹیلی جے آئیڈیا: کوڈنگ اسٹائل اور کوڈ فارمیٹنگ - 13اس کے بعد، ہم ایپ کلاس کے اوپر والے تبصرے کو JavaDoc میں تبدیل کر سکتے ہیں اور دیکھ سکتے ہیں کہ غلطی ایک نئی تعمیر میں ختم ہو گئی ہے۔

نیچے کی لکیر

کوڈ کا انداز کسی پروجیکٹ پر پیداواری صلاحیت کو زیادہ سے زیادہ کرنے کے لیے اہم ہے۔ مشترکہ اصولوں کے مطابق لکھا گیا خوبصورت کوڈ اس بات کی ضمانت دیتا ہے کہ آپ کے ساتھی کارکن اسے زیادہ آسانی سے اور جلدی سمجھ جائیں گے اور آپ کو تنقید کا نشانہ نہیں بنائیں گے۔ جدید ترقیاتی ٹولز کے ساتھ، طرز کے اصولوں پر قائم رہنا اتنا مشکل نہیں ہے۔ مجھے امید ہے کہ اس جائزے نے آپ کو ثابت کر دیا ہے کہ یہ سچ ہے۔ روایت کی پیروی کرتے ہوئے، یہاں موضوع پر تھوڑا سا اضافی مواد ہے:
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION