أسلوب البرمجة  أسلوب البرمجة هو عبارة عن مجموعة قواعد أو إرشادات تستخدم عند كتابة كود مصدري برنامج (حاسوب). وغالبا ما يتم الإدعاء بأن إتباع أسلوب معين في البرمجة يساعد مبرمج على قراءة وفهم الشفرة المصدرية المطابقة للأسلوب ومساعدتهم على تجنب تقديم الأخطاء.  ومن الأعمال الكلاسيكية في هذا الموضوع هو كتاب عناصر أسلوب البرمجة والذي كتب في السبعينات وفسر هذه الأساليب بأمثلة من لغات فورتران وبي إل وان التي كانت سائدة في هذا الوقت.  إن لغة البرمجة التي تستخدم لبرنامج معين يمكن اشتقاقها من عادات التشفير الخاصة بشركة أو مؤسسة حاسوبية أخرى بالإضافة إلى مفضلات المؤلف بالنسبة للأكواد. وغالبا ما يتم تصميم أساليب البرمجة لغة برمجة بعينها (أو عائلة لغات): ويعتبر الأسلوب أمرا جيدا للشفرة المصدرية الخاصة بلغة السي وربما لا تكون مناسبة للشفرة المصدرية بيسيك... الخ. ومع ذلك فيتم تطبيق بعض القواعد للعديد من اللغات.  يعد الأسلوب الجيد أمرا موضوعيا يصعب تحديده. ومع ذلك فهناك عدة عناصر شائعة في مجموعة كبيرة من أساليب البرمجة والتي تتضمن الشكل العام للشفرة المصدرية بما في ذلك تحديد المسافة البادئة واستخدام المساحات البيضاء حول المشغلات والكلمات الرئيسية وكتابة بعض الكلمات بحرف كبير في البداية وخاصة الكلمات الرئيسية والأسماء المختلفة وأسلوب وتهجئة علامات التعريف الخاصة بالمستخدم مثل الوظيفة والإجراء والأسماء المتنوعة واستخدام أسلوب التعليقات.  تتعامل أساليب البرمجة بشكل كبير مع الأشكال المرئية للشفرة المصدرية بهدف الحصول على جهود معرفية أقل بشرية لاستخراج المعلومات الخاصة بالبرنامج. ولطالما كان البرنامج متوافرا بحيث يعمل على صياغة وتنسيق الشفرة المصدرية تلقائيا ليترك المجال للمبرمجين للتركيز على التسمية والمنطق والتقنيات العالية. وكنقطة عملية يعد استخدام الكمبيوتر لتنسيق الشفرة المصدرية أمرا يوفر الوقت ومن الممكن أن يقوي المعايير المنتشرة بالشركة من دون جدل.  يساعد أسلوب المسافة البادئة في تحديد تدفق السيطرة وبلوكات الكود. وفي بعض لغات البرمجة يستخدم أسلوب المسافة البادئة في تعيين البلوكات المنطقية للشفرة ويعد الاستخدام الصحيح للمسافة البادئة في هذه الحالة أكثر من مجرد أسلوب. بلغة أخرى لا تؤثر المسافات البادئة والمساحات البيضاء في الوظيفة بالرغم من أن المسافات البادئة الصحيحة والمنطقية تجعل الشفرة أكثر قابلية للقراءة. قارن: if (hours < 24 && minutes < 60 && seconds < 60) { } else {  أو  if (hours < 24 && minutes < 60 && seconds < 60) else  مع شيء مثل: if ( hours< 24 && minutes< 60 && seconds< 60) {return false  أول نموذجان يكونان غالبا أسهل في القراءة لأنها تحمل مسافات بادئة بأسلوب ثابت (أسلوب «الفقرة المتدلية»). ويعد أسلوب المسافة البادئة أسلوبا مفيدا بشكل خاص عند التعامل مع مقومات متداخلة متعددة.  يجتمع أسلوب المسافة البادئة موديوليك زيرو مع عائدات الحوامل بدلا من المسافات البادئة. قارن كل ما سبق بما يلي: if (hours < 24 && minutes < 60 && seconds < 60) return true;  else return false;  يستخدم بايثون المسافة البادئة للإشارة إلى هياكل التحكم، لذا فالمسافات البادئة الصحيحة مطلوبة. وبفعل ذلك تكون الحاجة لوضع أقواس مع قوس (ترقيم) (مثل {... }) يتم إزالته. على الجانب الآخر، فإن النسخ واللصق اليدوي لشفرة بايثون يمكن أن يؤدي على بعض المشاكل لأن مستوى المسافة البادئة للشفرة الملصوقة يمكن ألا يكون نفس مستوى المسافة البادئة للخط الحالي. مثل هذا التنسيق يمكن أن يكون القيام به يدويا مرهقا ولكن بعض محرر نصوص وبيئة تطوير متكاملة يتمتعون بسمات خاصة للقيام بذلك تلقائيا. كما تتواجد بعض المشاكل أيضا حين يمكن جعل البايثون غير قابلة للاستخدام حين تنشر في أحد المنتديات أو الصفحات الإليكترونية التي تزيل المساحات البيضاء بالرغم من أنه من الممكن تجنب هذه المشكلة حيثما أمكن من أجل إدراج الشفرة في بطاقات تحتفظ بمساحات بيضاء مثل"<pre>... </pre>" (for لغة ترميز النص الفائق), "[code]"... "[/code]" (for bbcode), إلخ.  تتمتع لغة الهاسكيل أيضا بالدور الجانبي الذي يجعل المسافات البادئة تحدد البلوكات، ومع ذلك فعلى عكس البايثون، لا يعد وضع المسافات البادئة أمرا إجباريا في الهاسكيل- غلا أن الأقواس المجعدة والفواصل المنقوطة يمكن استخدامها بدلا منها (من حين لآخر).  غالبا ما يكون من المفيد محاذاة العناصر المتشابهة بصورة عمودية لجعل تلك الفيروسات التي تنشأ عن الطباعة أكثر وضوحا. قارن: $search = array('a', 'b', 'c', 'd', 'e'); $replacement = array('foo', 'bar', 'baz', 'quux');  // Another example:  $value = 0; $anothervalue = 1; $yetanothervalue = 2; مع:  $search = array('a', 'b', 'c', 'd', 'e'); $replacement = array('foo', 'bar', 'baz', 'quux');  // مثال آخر:  $yetanothervalue = 2; المثال السابق يوضح أمرين بشكل بديهي لم تكونا واضحين في المثال الأسبق:   ومن بين الأمور الجدلية ضد المحاذاة العمودية:  في تلك المواقف التي تتطلب وجود مسافات بيضاء فإن القواعد النحوية لمعظم لغات التنسيق الحر لا تهتم بالكم الذي يظهر. وعادة ما يستخدم الأسلوب المتعلق بالمساحات البيضاء لتعزيز القابلية للقراءة. ولا يوجد حاليا وقائع صلبة معروفة (استنتاجات من دراسات) حول كيفي يمكن أن تكون المسافات البيضاء مقروءة بصورة سهلة.  على سبيل المثال، قارن الأمثلة التالية المتكافئة في تركيبها والخاصة بشفرة السي. int i; for(i=0;i<10;++i){  مقابل  int i; for (i=0; i<10; ++i) {  مقابل  int i; for (i = 0; i < 10; ++i) {  مقابل  int i; for(i = 0; i < 10; ++i) {  استخدام الجدولة لخلق مساحات بيضاء يشير غلى بعض المسائل الخاصة حين لا يتم الانتباه بصورة كافية لأن موضع نقطة الجدولة يمكن أن يختلف تبعا للأدوات التي يتم استخدامها وتبعا لمفضلات المستخدم نفسه.  مثال على ذلك، نجد أن أحد المبرمجين يفضلون وقفات الجدولة المكونة من أربع وقفات وقد تم تثبيت مجموعة أدواته على هذه الوضعية ويستعين بها لتنسيق شفرته. int ix; // Index to scan array long sum; // Accumulator for sum بينما يفضل مبرمج آخر وقفات الجدولة المكونة من ثماني ويتم تثبيت أدواته على هذه الوضعية. وحين يفحص الشفرة، فربما يجد من الصعب قراءتها. int ix; // Index to scan array long sum; // Accumulator for sum ومن الحلول التي تستخدم بصورة كبيرة في هذا الموضوع ربما تتضمن منع استخدام الجدولة للمحاذاة أو قواعد حول كيفية وضع وقفات الجدولة. لاحظ أن علامات الجدولة تعمل بصورة أفضل حين يتم استخدامها بشكل ثابت، وتكون مقيدة بالمسافات البادئة المنطقية ولا تستخدم للمحاذاة: class MyClass {