CodeGym /مدونة جافا /Random-AR /IntelliJ IDEA: أسلوب الترميز وتنسيق الكود
John Squirrels
مستوى
San Francisco

IntelliJ IDEA: أسلوب الترميز وتنسيق الكود

نشرت في المجموعة
لغة البرمجة تشبه إلى حد كبير اللغة المنطوقة. والفرق الوحيد هو أنها لغة خاصة هدفها الأساسي هو تسهيل التواصل مع الكمبيوتر لكي نشرح للكمبيوتر ما نريده أن يفعله. لكن لا يمكنك إجراء محادثة شخصية مع جهاز كمبيوتر. عندما بدأت في تعلم لغة برمجة، نظرت إلى الكتب أو بعض المصادر التعليمية مثل CodeGym. وأظهر لك هذا المورد رمزًا يفهمه الكمبيوتر. ولكن يجب عليك أيضًا أن تفهمها عندما تتعلم لغة جافا. كما هو الحال مع أي لغة، تم اعتماد بعض اتفاقيات التنسيق في البرمجة. على سبيل المثال، في المجتمع المهذب، تعتبر الكتابة بهذه الطريقة سلوكًا سيئًا. وفي Java، يعد بدء اسم الطريقة بحرف كبير انتهاكًا صارخًا لاتفاقيات البرمجة. IntelliJ IDEA: أسلوب الترميز وتنسيق الكود - 1يتم توفير قواعد تعليمات Java البرمجية في الوثيقة " اتفاقيات التعليمات البرمجية للغة برمجة Java" . يمكن أيضًا لاتفاقيات التشفير تنظيم التفاصيل الأصغر، مثل المسافة البادئة. تخيل الكابوس المطلق الذي قد يصبح عليه التحكم في الإصدار إذا كانت المسافة البادئة غير متناسقة، حيث يستخدم بعض الأشخاص علامات التبويب ويستخدم آخرون المسافات. كيف سيكون الأمر بالنسبة لشخص يحتاج إلى التحقق من الإصلاح بطريقة واحدة فقط، ولكنه يجد الملف بأكمله قد تغير بسبب الاختلافات في المسافات وعلامات التبويب؟ بالطبع، كما هو الحال مع اللغة العادية، قد تتغير التقاليد اعتمادًا على مكان استخدام اللغة. على سبيل المثال، في المساحات الشاسعة من الويب، يمكنك العثور على Google Java Style Guide و Twitter Java Style Guide . لهذه المراجعة، نحتاج إلى موضوع اختبار. سنستخدم نظام التشغيل الآلي لبناء 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());
     }
 }
ما الذي يلفت انتباهك على الفور؟ تعليق توضيحي على نفس سطر إعلان الطريقة، والذي يبدو قبيحًا، أليس كذلك؟ كيف يمكن اصلاح هذا؟ يحتوي 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 -> Settingsفي قائمة IDEA (أو اضغط على Ctrl+Alt+S). أدخل "نمط الكود" في حقل البحث في نافذة الإعدادات. في قسم "نمط التعليمات البرمجية"، يمكنك تحديد إعدادات لغات أكثر من لغة Java فقط. لكن جافا هي ما يهمنا الآن. كما ترون، يتم تقسيم الإعدادات إلى عدة علامات تبويب. الميزة المفيدة للغاية هي أن مثالًا للعملية يظهر في الجزء الأيمن من النافذة: IntelliJ IDEA: أسلوب الترميز وتنسيق الكود - 2توضح لقطة الشاشة أنه يمكننا ضبط "استدعاءات الطريقة المتسلسلة" على "الالتفاف دائمًا"، أي تقسيم استدعاءات الطريقة المتسلسلة دائمًا إلى أسطر منفصلة. الآن انقر فوق زر التنسيق مرة أخرى في فئة الاختبار ونرى أنه يعمل بالفعل! لكن في بعض الأحيان تحتاج إلى تنسيق بعض التعليمات البرمجية خارج قواعد التنسيق القياسية. قم بإعداد التنسيق على النحو التالي: 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: نمط الكود ". هناك ميزة تنسيق مهمة أخرى: تنسيق الواردات. يتم تنفيذ هذه العملية بشكل منفصل وتسمى " Optimize Imports". وهو موجود تحت Code -> Optimize Imports(Ctrl+Alt+O). يؤدي تحسين عمليات الاستيراد إلى إزالة عمليات الاستيراد غير الضرورية وترتيب عمليات الاستيراد بالترتيب الصحيح وفقًا للإعدادات الموجودة في علامة Importsالتبويب " Code Style" ضمن إعدادات Java. والأكثر من ذلك، إذا كنت تريد أن يتم هذا التنسيق تلقائيًا، فهناك أخبار جيدة: يمكن تحقيق ذلك باستخدام البرنامج الإضافي 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 عبر ملف -> الإعدادات (Ctrl+Alt+S) وانتقل إلى قسم "المكونات الإضافية". للعثور على مكونات إضافية جديدة، انقر فوق الزر " ". 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بعد ذلك، يمكننا تحويل التعليق فوق فئة التطبيق إلى JavaDoc ونرى أن الخطأ قد اختفى في البنية الجديدة.

الخط السفلي

يعد نمط التعليمات البرمجية مهمًا لزيادة الإنتاجية في المشروع إلى أقصى حد. تضمن التعليمات البرمجية الجميلة المكتوبة وفقًا للقواعد المشتركة أن زملائك في العمل سوف يفهمونها بسهولة وسرعة أكبر ولن يوجهوا لك الكثير من الانتقادات. مع أدوات التطوير الحديثة، ليس من الصعب الالتزام بقواعد الأسلوب. آمل أن تكون هذه المراجعة قد أثبتت لك أن هذا صحيح. وفقًا للتقاليد، إليك القليل من المواد الإضافية حول هذا الموضوع:
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION