CodeGym /وبلاگ جاوا /Random-FA /IntelliJ IDEA: سبک کدنویسی و قالب بندی کد
John Squirrels
مرحله
San Francisco

IntelliJ IDEA: سبک کدنویسی و قالب بندی کد

در گروه منتشر شد
یک زبان برنامه نویسی بسیار شبیه به یک زبان گفتاری است. تنها تفاوت این است که یک زبان خاص است که هدف اصلی آن تسهیل ارتباط با یک کامپیوتر است تا به کامپیوتر توضیح دهیم که ما می خواهیم چه کاری انجام دهد. اما شما نمی توانید با کامپیوتر مکالمه شخصی داشته باشید. زمانی که شروع به یادگیری یک زبان برنامه نویسی کردید، به کتاب ها یا برخی منابع آموزشی مانند CodeGym نگاه می کردید. و این منبع کدی را به شما نشان داد که رایانه آن را درک می کند. اما شما نیز باید با یادگیری زبان جاوا آن را درک کنید. مانند هر زبان دیگری، برخی از قراردادهای قالب بندی در برنامه نویسی پذیرفته شده اند. به عنوان مثال، در جامعه مودبانه، این گونه نوشتن را بد اخلاقی می دانند. و در جاوا، شروع نام یک روش با حرف بزرگ نقض فاحش قوانین کدگذاری است. IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 1قوانین کد جاوا در سند کد قراردادها برای زبان برنامه نویسی جاوا آمده است . قراردادهای کدگذاری همچنین می‌توانند جزئیات کوچک‌تری مانند تورفتگی را تنظیم کنند. تصور کنید که اگر تورفتگی ناهماهنگ باشد، کنترل نسخه به کابوس کامل تبدیل می شود، برخی افراد از تب ها و افراد دیگر از فاصله استفاده می کنند. برای کسی که نیاز به بررسی درستی فقط در یک روش دارد، اما متوجه می شود که کل فایل به دلیل تفاوت در فاصله ها و برگه ها تغییر کرده است، چگونه خواهد بود؟ البته، مانند زبان معمولی، قراردادها ممکن است بسته به محل استفاده از یک زبان تغییر کنند. به عنوان مثال، در گستره وسیع وب، می توانید راهنمای سبک جاوا گوگل و راهنمای سبک جاوا توییتر را بیابید . برای این بررسی، به یک موضوع آزمایشی نیاز داریم. ما از سیستم اتوماسیون ساخت Gradle استفاده خواهیم کرد. این به ما اجازه می دهد تا با ایجاد یک پروژه جدید از یک الگو به سرعت شروع کنیم. Gradle یک افزونه عالی دارد: Build Init Plugin . بیایید به یک دایرکتوری جدید برویم و دستور زیر را در آنجا اجرا کنیم: gradle init --type java-application پس از آن IntelliJ IDEA را راه اندازی کنید. اگر پنجره ای با پروژه باز می بینید (یعنی ویرایشگر کد و درخت پروژه را می بینید)، این پروژه را با استفاده از File -> Close Project. اکنون در پنجره خوش آمدگویی، " Import Project" را اجرا کرده و پروژه جدید ما را وارد کنید. هنگام وارد کردن، Use 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());
    }
}
چه چیزی بلافاصله توجه شما را جلب می کند؟ حاشیه نویسی در همان خط با اعلان روش، که زشت به نظر می رسد، درست است؟ چگونه این را رفع کنیم؟ CodeIntelliJ IDEA یک ورودی منو برای دستکاری های مختلف کد دارد . یکی از این دستکاری ها " " است 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;
همانطور که می بینید، عملیات در Stream در یک خط است. اما اگر بخواهیم مطمئن شویم که فراخوانی های متد زنجیره ای همیشه به خطوط جدید در هر اپراتور دوره تقسیم می شوند، چه؟ ما می توانیم این کار را به صورت دستی انجام دهیم. اما به یاد داشته باشید که ما می خواهیم همه چیز به طور خودکار اتفاق بیفتد. در واقع، ما مطمئناً هر از گاهی مرحله دستی را فراموش خواهیم کرد، و سپس در همه جا با قالب‌بندی‌های متفاوتی مواجه خواهیم شد، و این خوب نیست. بنابراین باید قاعده ای را که IDEA برای قالب بندی استفاده می کند ویرایش کنیم. File -> Settingsدر منوی IDEA انتخاب کنید (یا Ctrl+Alt+S را فشار دهید). "سبک کد" را در قسمت جستجو در پنجره تنظیمات وارد کنید. در بخش «سبک کد»، می‌توانید تنظیماتی را برای زبان‌های بیشتری از جاوا مشخص کنید. اما جاوا چیزی است که ما در حال حاضر به آن علاقه داریم. همانطور که می بینید، تنظیمات به چندین تب تقسیم می شوند. یک ویژگی فوق العاده مفید این است که نمونه ای از عملیات در قسمت سمت راست پنجره نشان داده شده است: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 2تصویر صفحه نشان می دهد که می توانیم "Chained method calls" را روی "wrap always" تنظیم کنیم، یعنی همیشه فراخوانی های متد زنجیره ای را به خطوط جداگانه تقسیم کنیم. حالا دوباره در کلاس تست دکمه قالب بندی را بزنید و می بینیم که واقعا کار می کند! اما گاهی اوقات لازم است برخی کدها را خارج از قوانین قالب بندی استاندارد قالب بندی کنید. قالب بندی را به صورت زیر تنظیم کنید: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 3برای جلوگیری از قالب بندی، در بخش «سبک کد»، نشانگرهای قالب‌کننده را فعال کنید: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 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بخش " " تغییر دهید: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 5همانطور که می بینید، تنظیمات زیادی در آنجا وجود دارد. می توانید جزئیات بیشتر در مورد Code styleتنظیمات " " را در اینجا بخوانید: " IDEA Help: Code Style ". یکی دیگر از ویژگی های قالب بندی مهم وجود دارد: قالب بندی واردات. این عملیات به صورت جداگانه اجرا می شود و " Optimize Imports" نامیده می شود. در زیر (Ctrl+Alt+O) قرار دارد Code -> Optimize Imports. بهینه سازی واردات، واردات غیر ضروری را حذف می کند و واردات را به ترتیب صحیح مطابق با تنظیمات موجود در Importsبرگه " Code Style" تنظیمات جاوا مرتب می کند. علاوه بر این، اگر می‌خواهید این قالب‌بندی به صورت خودکار انجام شود، یک خبر خوب وجود دارد: این کار را می‌توان با استفاده از افزونه Save Actions انجام داد .

توزیع تنظیمات در یک دستور

در بالا دیدیم که می‌توانید سبک قالب‌بندی خود را هر طور که بخواهید سفارشی کنید. اما چگونه می توان از این سبک در یک تیم استفاده کرد؟ خیلی راحت. چندین گزینه وجود دارد. ساده ترین کار این است که یک طرح سبک کد را ذخیره کنید. تنظیمات IDEA را با استفاده از File -> Settings(یا فشار دادن Ctrl+Alt+S) باز کنید. در Code Styleبخش " "، می توانیم "طرح" را ببینیم. این طرح قالب بندی ما است. به‌طور پیش‌فرض، طرح «پیش‌فرض» استفاده می‌شود و با برچسب «IDE» مشخص می‌شود، به این معنی که این تنظیم فقط برای IDE ما اعمال می‌شود – بر هیچ‌کس دیگری تأثیر نمی‌گذارد. برای ایجاد یک طرح "سفارشی"، از دکمه سمت راست استفاده کنید تا یک کپی ایجاد کنید و نامی برای آن بگذارید، به عنوان مثال: CodeGym IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 6سپس می توانیم تنظیمات را وارد یا صادر کنیم: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 7 گزینه دیگر وارد کردن تنظیمات IDEA است: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 8گزینه سوم مخزن تنظیمات برای استفاده از مخزن تنظیمات، مستندات راهنمای IntelliJ IDEA را برای جزئیات بیشتر در پیوند زیر ببینید: مخزن تنظیمات ". در مورد ایجاد یک سبک یکپارچه در یک تیم، من همچنین نمی‌توانم از پشتیبانی خوب سبک‌های Eclipse خودداری کنم. IDE. برای انجام این کار، باید یک افزونه جداگانه نصب کنید: تنظیمات IDEA را از طریق File -> Settings (Ctrl+Alt+S) باز کنید و به بخش "Plugins" بروید. برای یافتن افزونه های جدید، روی دکمه " " کلیک کنید. Browse Repositoriesسپس افزونه Eclipse Code Formatter را در پنجره جستجو پیدا کنید. IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 9پس از نصب آن، باید IDEA را دوباره راه اندازی کنید - این یک روش استاندارد است. اکنون همه چیز انجام شده است. یک بخش جدید در تنظیمات IDEA وجود دارد: "Eclipse Code Formatter". می توانید یک نمونه فایل فرمت Eclipse را در اینجا پیدا کنید . چیزی شبیه به این خواهد بود: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 10

الزامات سخت تر

علاوه بر ابزارهای IDEA، می‌توانید از افزونه‌های اتوماسیون ساخت نیز برای سخت‌تر کردن الزامات استفاده کنید. هیچ راهی وجود ندارد که بتوانید به صورت دستی بررسی کنید که شخصی از قالب بندی مناسب استفاده کرده است. شاید بتوانید با 5 نفر در یک تیم. اما با وجود 100 نفر در یک شرکت، این واقع بینانه نیست. و حتی ردیابی پنج نفر نیز دشوار خواهد بود. و چرا وقت خود را برای هر یک از اینها تلف کنید؟ در صورت نقض قوانین، جلوگیری از ساخت پروژه بسیار ساده تر خواهد بود. در واقع، این یک موضوع کاملاً جداگانه است به نام "بازرسی کد". در این مقاله، من فقط می خواهم به شما نشان دهم که چگونه کار می کند. یکی از محبوب ترین پلاگین های Gradle (به خاطر می آورید که پروژه ما را می سازد) pmd است . برای فعال کردن آن، فقط به اسکریپت ساخت پروژه Gradle ما (فایل 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
با رفتن به گزارش، چیزی شبیه به این را می بینیم: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 11علاوه بر این، ستون " Problem" پیوندی به شرح مشکل در وب سایت افزونه pmd ارائه می دهد. برای مثال، برای headerCommentRequirement Requiredخطای " "، پیوند به اینجا می رود: pmd — CommentRequired . این خطا نشان می دهد که کلاس ما JavaDoc ندارد. می‌توانیم از قالب‌ها برای پیکربندی یک JavaDoc در بالای کلاس‌ها استفاده کنیم: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 12و محتویات آن را مشخص کنیم File Header: IntelliJ IDEA: سبک کدنویسی و قالب بندی کد - 13پس از آن، می‌توانیم نظر بالای کلاس App را به JavaDoc تبدیل کنیم و ببینیم که خطا در یک ساخت جدید برطرف شده است.

خط پایین

سبک کد برای به حداکثر رساندن بهره وری در یک پروژه مهم است. کد زیبا که بر اساس قوانین مشترک نوشته شده است تضمین می کند که همکاران شما راحت تر و سریع تر آن را درک می کنند و به شما انتقاد نمی کنند. با ابزارهای توسعه مدرن، پایبندی به قوانین سبک چندان سخت نیست. امیدوارم این بررسی به شما ثابت کرده باشد که این درست است. به پیروی از سنت، در اینجا مطالب اضافی کمی در مورد این موضوع وجود دارد:
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION