اذا لم تجد ما تبحث عنه يمكنك استخدام كلمات أكثر دقة.
يعرف أسلوب وايت سميث أيضا بأسلوب ويشارت إلى درجة قليلة وهو اقل شيوعا اليوم من الثلاثة أساليب الأخرى. وقد كان يستخدم ذلك بصورة أساسية في توثيق المصنف سي التجاري الأول، مترجم وايت سميث. كما كان شائعا أيضا في الأيام الأولى للويندوز حيث كان يستخدم في ثلاث كتب برمجة ويندوز مؤثرة دليل المبرمج للويندوز لديورانت وبرمجة الويندوز لياو وكارلسون وبيتزولد وتقنيات برمجة تشغيل ويندوز 3 بيتر نورتن وياو. وتستمر الأساسيات السيمبية للدعوة على ذلك على أنها أسلوب وضع أقواس موصى به نظام تشغيل سيمبيان أو إس لتطبيقات الهاتف المحمول التي تعمل بسي++.
هذا الأسلوب يضع الأقواس المرتبطة ببيان التحكم على سطر النص مع مسافة بادئة. ويتم وضع الإزاحة للبيانات داخل القواس على نفس مستوى الأقواس.
while (x == y) { something(); somethingelse(); } finalthing();
مميزات هذا الأسلوب شبيهة بتلك الخاصة بأسلوب أولمان في أن البلوكات تنفصل بوضوح عن بيانات التحكم. ومع ذلك ففي أسلوب وايتسميث، لا يزال البلوك مرتبطا بصورة مرئية ببيان التحكم بدلا من أن يبدو كبلوك شيفرة ليس له علاقة تحيط به مساحات بيضاء. ميزة أخرى هي أن محاذاة الأقواس مع البلوك يؤكد على حقيقة أن البلوك بالكامل هو بيان مركب فردي مفاهيميا (وبرمجيا). علاوة على ذلك، فإن وضع مسافات بادئة للأقواس يؤكد على أنها تابعة لبيان التحكم. من عيوب هذا الأسلوب هي أن الأقواس لا تظهر جيدا. ومع ذلك يعد ذلك أمرا معتمد على الرأي كثيرا لأن الأقواس تشغل سطرا كاملا بنفسها حتى إذا كانت مسافتها البادئة في نفس مستوى البلوك.
عيب آخر يمكن أن يكون أنه إذا تم توظيف عناصر نحوية ملائمة مثل "else if"، فإن القوس النهائي لا يتوازى مرة أخرى مع العبارة التي ينتمي إليها من الناحية المفاهيمية، بالرغم من أن الآخرين يشيرون إلى أن قوس الإغلاق ينتمي لقوس الافتتاح وليس لعبارة التحكم.
كمثال:
if (data != NULL && res > 0) { if (!JS_DefineProperty(cx, o, "data", STRING_TO_JSVAL(JS_NewStringCopyN(cx, data, res)), NULL, NULL, JSPROP_ENUMERATE)) { QUEUE_EXCEPTION("Internal error!"); goto err; } PQfreemem(data); } else if (!JS_DefineProperty(cx, o, "data", OBJECT_TO_JSVAL(NULL), NULL, NULL, JSPROP_ENUMERATE)) { QUEUE_EXCEPTION("Internal error!"); goto err; }
ومع ذلك، إذا اتبع المرء قاعدة وضع الأسلوب التي تنص بأن يتم توفير الأقواس في كل مستوى من "النطاق"، فإن الشيفرة العليا يمكن كتابتها لاستبدال "else if" بكلمة if منفصلة في نطاق به جزئية "else" منفصلة تماما بالعبارة.
if (data != NULL && res > 0) { if (!JS_DefineProperty(cx, o, "data", STRING_TO_JSVAL(JS_NewStringCopyN(cx, data, res)), NULL, NULL, JSPROP_ENUMERATE)) { QUEUE_EXCEPTION("Internal error!"); goto err; } PQfreemem(data); } else { if (!JS_DefineProperty(cx, o, "data", OBJECT_TO_JSVAL(NULL), NULL, NULL, JSPROP_ENUMERATE)) { QUEUE_EXCEPTION("Internal error!"); goto err; } }
عقب الإستراتيجية المذكورة فيما سبق، يمكن أن يجادل المرء بأن الشيفرة يمكن قراءتها بصورة أكبر، ومع ذلك تثار بعض المشكلات في القدرة على القراءة حيث يتم إضافة المزيد من الشروط، والتي تظهر في هذه الشيفرة الزائفة (على الرغم من أنه عادة في هذه الحالة يكفي فقط عبارة متحولة)
else { if (stuff is true) { Do stuff } else { if (other stuff is true) { Do other stuff } else { if (its still not true) { Do even more other stuff } } } }
ربما في وقت من الأوقات كان هناك حافز لوضعه بأكبر قدر ممكن في كل سطر من الشيفرة حتى يتم تخفيض عدد الصفحات التي يمكن طباعتها. ولم تعد تلك مشكلة مؤرقة وتزيد من قابلية القراءة بطريقة قواعد صياغة وايت سميث.