Swift-style-guide: الاستخدام التقديري للأقواس يبطل حذف الأقواس غير الضرورية

تم إنشاؤها على ١٤ يونيو ٢٠١٧  ·  6تعليقات  ·  مصدر: raywenderlich/swift-style-guide

لقد قررنا مؤخرًا اعتماد دليل الأسلوب هذا ، لكن البيان التالي تسبب لنا في بعض الصداع:

في التعبيرات الأكبر ، يمكن للأقواس الاختيارية أحيانًا أن تجعل الكود يُقرأ بشكل أكثر وضوحًا.

لكي نكون دقيقين ، فإن التعبير الأكبر هو شخصي للغاية والمطور الذي اعتاد أكثر على وجود أقواس حول العبارات الشرطية سيصر على أن استخدام الأقواس سيعزز قابلية القراءة. كحد أدنى ، سأجادل ضد أي استخدام للأقواس إذا لم يغير معنى العبارة الشرطية.

أي أفكار؟

التعليق الأكثر فائدة

أتفق معdesignatednerd. أنا شخصياً أفضل استخدام الأقواس حول التعبيرات. أنا أيضًا معتدل الحد الأدنى ولكني أعتقد أن الكود يجب أن يكون مقروءًا وواضحًا للأشخاص ؛ خلاف ذلك ، فإن المترجم لا يهتم حقًا. الطريقة التي أنظر إليها هي أنني أتوقع أن أرى مهمة بسيطة بعد = ، على سبيل المثال let thing = foo . ومع ذلك ، فإن القوس بعد ذلك هو إشارة بصرية إلى أن المهمة تحدث في مكان ما لاحقًا ، ربما في نهاية السطر:

let thing = ( /* some short or long logic here, skip it */ ) ? foo : bar

ال 6 كومينتر

هناك الكثير من الأماكن التي أراها مفيدة وهي توضيح مكان استخدام التحقق من المساواة كمنطق منطقي واحد:

let thing = thingA == thingB
// vs. 
let thing = (thingA == thingB)

يوضح ترتيب العمليات هناك أن thing هو منطقي سيكون له قيمة " thingA يساوي thingB ، لكن هذا يستغرق وقتًا أطول بكثير للتحليل المرئي باستخدام الخيار الأول من الثاني.

هذا مفيد أيضًا مع العبارات المركبة ، على الرغم من أنها ضرورية في بعض الأحيان لتوضيح ترتيب العمليات أيضًا:

if thingC && (thingD || thingE) { ...

في الأساس، فإنه في الغالب حول scannability: إذا كان يأخذك حتى الثانية وقتا أطول لتحليل وأنت تقرأ من خلال ذلك، أن يحصل سريعة الحقيقية القديمة. وإذا استغرق مطورو البرامج المبتدئين وقتًا أطول في التفكير فيما يحدث ، فيمكن أن يفتح الباب أمام كارثة.

أتفق معdesignatednerd. أنا شخصياً أفضل استخدام الأقواس حول التعبيرات. أنا أيضًا معتدل الحد الأدنى ولكني أعتقد أن الكود يجب أن يكون مقروءًا وواضحًا للأشخاص ؛ خلاف ذلك ، فإن المترجم لا يهتم حقًا. الطريقة التي أنظر إليها هي أنني أتوقع أن أرى مهمة بسيطة بعد = ، على سبيل المثال let thing = foo . ومع ذلك ، فإن القوس بعد ذلك هو إشارة بصرية إلى أن المهمة تحدث في مكان ما لاحقًا ، ربما في نهاية السطر:

let thing = ( /* some short or long logic here, skip it */ ) ? foo : bar

@ samkim102 إذا قرأت سؤالك بشكل صحيح ، فأنت لا تسأل عن الحالات التي تناولتها التعليقات الأخرى ، ولكن بدلاً من ذلك ، تسأل عن استخدام الأقواس حول حالة بيان if .

إذا كان الأمر كذلك ، فيرجى مساعدتي في فهم كيفية توضيح أنه لا ينبغي استخدام الأقواس في هذه الحالة. تبدو الصياغة الحالية للدليل واضحة بالنسبة لي.

ملاحظة: يمكن تغيير القاعدة لتقول لاستخدام الأقواس فقط عندما تعزز الوضوح. أعتقد أنه تم وضع المبدأ التوجيهي الأصلي هناك لمنع:

// go for a Sunday drive
if (day.isSunday) {
   vehicle.drive()
}

من ناحية أخرى ، إذا قمت بحذف الأقواس لأنك تعرف أسبقية العوامل الأخرى المعنية ، فربما تكون ذكيًا جدًا من أجل مصلحتك.

المشكلة ، كما أفهمها ، هي أن بعض الناس يبدو أنهم يعتقدون أن الأقواس مطلوبة للتوضيح في جميع الحالات. من الواضح أن هذا ليس صحيحًا في الغالبية العظمى من الحالات في كشوف الحساب if و switch . يعد الاستخدام في بيانات التخصيص ، كما ذكر المعلقون الآخرون ، مستنقعًا أكثر قتامة. "يعزز الوضوح" هو معيار شخصي لا يبدو أنه يساعد الوضع هنا.

إذا لم أسمع المزيد من المؤلف الأصلي في الأسبوع المقبل ، فسوف أغلق هذا لقلة النشاط.

مغلق لعدم الاستجابة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات