any fool can write code that a computer can understand. good programmers write code that humans...

27
Code Formatting Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Telerik Software Academy http://academy.telerik.com High-Quality Code

Upload: -

Post on 20-Jan-2018

228 views

Category:

Documents


0 download

DESCRIPTION

Why do we need it? How can white spaces and parenthesis help us?

TRANSCRIPT

Page 1: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Code FormattingAny fool can write code that a computer can understand.

Good programmers write code that humans can understand.

Telerik Software Academyhttp://academy.telerik.com

High-Quality Code

Page 2: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Table of Contents1. Why Do We Need Code

Formatting?2. Formatting Methods3. Formatting Types4. Common Mistakes5. Alignments6. Automated Tools

2

Page 3: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Code FormattingWhy do we need it?

How can white spaces and parenthesis help us?

Page 4: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Why Code Needs Formatting?

4

public const string FILE_NAME="example.bin" ; static void Main ( ){FileStream fs= new FileStream(FILE_NAME,FileMode. CreateNew) // Create the writer for data .;BinaryWriter w=new BinaryWriter ( fs );// Write data to Test.data.for( int i=0;i<11;i++){w.Write((int)i);}w .Close();fs . Close ( ) // Create the reader for data.;fs=new FileStream(FILE_NAME,FileMode. Open, FileAccess.Read) ;BinaryReader r= new BinaryReader(fs); // Read data from Test.data. for (int i = 0; i < 11; i++){ Console .WriteLine(r.ReadInt32 ());}r . Close ( ); fs . Close ( ) ; }

Page 5: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Code Formatting Fundamentals

Good formatting goals To improve code readability To improve code maintainability

Fundamental principle of code formatting:

Any (consistent) formatting style that follows the above principle is good

Good formatting don’t affect speed, memory use or other aspects of the program

5

The formating of the source code should disclose its logical structure.

Page 6: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Formatting Blocks in C# Put { and } alone on a line under the corresponding parent block

Indent the block contents by a single [Tab] Visual Studio will replace the [Tab]

with 4 spaces Example:

6

if (some condition){ // Block contents indented by a single [Tab] // VS will replace the [Tab] with 4 spaces}

Page 7: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Formatting Blocks in JavaScript

Put { at the end of the block and } alone on a line under the corresponding parent block

Indent the block contents by a single [Tab] [tab] or spaces depends on the

team style Example:

7

if (some condition) { // Block contents indented by a single [Tab] // Choosing between [tab] and spaces depends // on project formatting style}

Page 8: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Why are Brackets Obligatory?

8

// swap left and right elements for whole arrayfor ( var i=0; i<MaxElements; i++ ) leftElement = left[i]; left[i] = right[i]; right[i] = leftElement;

// swap left and right elements for whole arrayfor (var i = 0; i < MaxElements; i++){ leftElement = left[i]; left[i] = right[i]; right[i] = leftElement;}

x = 3+4 * 2+7;

x = (3 + 4) * (2 + 7);

Page 9: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Empty Lines between Methods

Use empty line for separation between methods:

9

public class Factorial{ private static ulong CalcFactorial(uint num) { if (num == 0) return 1; else return num * CalcFactorial(num - 1); } static void Main() { ulong factorial = CalcFactorial(5); Console.WriteLine(factorial); }}

Leave empty line between

methods

Always use { and } after if

(there is no space to do it here)

Page 10: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Methods Indentation Methods should be indented with a single [Tab] from the class body

Methods body should be indented with a single [Tab] as well

10

public class IndentationExample{ private int Zero() { return 0; }}

The entire method is indented with a

single [Tab]

Method body is also indented

Page 11: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Brackets in Methods Declaration

Brackets in the method declaration should be formatted as follows:

Don't use spaces between the brackets:

The same applies for if-conditions and for-loops:

11

private static ulong CalcFactorial(uint num)

private static ulong CalcFactorial ( uint num )

private static ulong CalcFactorial (uint num)

if (condition) { … }

Page 12: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Separating Parameters Separate method parameters by comma followed by a space Don't put space before the comma Examples:

Incorrect examples:

12

private void RegisterUser(string username, string password)

private void RegisterUser(string username,string password)private void RegisterUser(string username ,string password)private void RegisterUser(string username , string password)

RegisterUser("academy", "s3cr3t!p@ssw0rd");

Page 13: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Empty Lines in Method Body

Use an empty line to separate logically related sequences of lines:

13

private List<Report> PrepareReports(){ List<Report> reports = new List<Report>();

// Create incomes reports Report incomesSalesReport = PrepareIncomesSalesReport(); reports.Add(incomesSalesReport); Report incomesSupportReport = PrepareIncomesSupportReport(); reports.Add(incomesSupportReport);

// Create expenses reports Report expensesPayrollReport = PrepareExpensesPayrollReport(); reports.Add(expensesPayrollReport); Report expensesMarketingReport = PrepareExpensesMarketingReport(); reports.Add(expensesMarketingReport);

return reports;}

Empty line

Empty line

Empty line

Page 14: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Formatting Types Formatting classes / structures / interfaces / enumerations Indent the class body with a single

[Tab] Use the following order of

definitions: Constants, delegates, inner types,

fields, constructors, properties, methods

Static members, public members, protected members, internal members, private members

The above order of definitions is not the only possible correct one

14

Page 15: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Formatting Types – Example in C#

15

public class Dog{ // Static variables public const string SPECIES = "Canis Lupus Familiaris"; // Instance variables private int age; // Constructors public Dog(string name, int age) { this.Name = name; this.age = age; }

(continues on the next slide)

Page 16: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Formatting Types – Example in C# (2)

16

// Properties public string Name { get; set; } // Methods public void Breath() { // TODO: breathing process } public void Bark() { Console.WriteLine("wow-wow"); }}

Page 17: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Formatting Conditional Statements and Loops

Formatting conditional statements and loops Always use { } block after if / for / while, even when a single operator follows

Indent the block body after if / for / while

Always put a new line after a if / for / while block!

Always put the { on the next line (in C#)

Always put the { on the same line (in JavaScript)

Never indent with more than one [Tab]

17

Page 18: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Conditional Statements and

Loops Formatting – C# Examples Example:

Incorrect examples:

18

for (int i = 0; i < 10; i++){ Console.WriteLine("i={0}", i);}

for (int i = 0; i < 10; i++) Console.WriteLine("i={0}", i);

for (int i = 0; i < 10; i++) Console.WriteLine("i={0}", i);for (int i = 0; i < 10; i++) { Console.WriteLine("i={0}", i);}

The { and } are

missingNever put multiple

stetements on the same

line!

In C# the { should be on the next line

Page 19: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Using Empty Lines Empty lines are used to separate

logically unrelated parts of the source code

Don't put empty lines when not needed!

19

public static void PrintList(List<int> ints) { Console.Write("{ "); foreach (int item in ints) { Console.Write(item); Console.Write(" "); }

Console.WriteLine("}");}

static void Main(){ // …

An empty line

separates the

methods

An empty lineafter the foreach

block

Page 20: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Misplaced Empty Lines – Example

20

public static void PrintList(List<int> ints) { Console.Write("{ "); foreach (int item in ints) { Console.Write(item);

Console.Write(" ");

} Console.WriteLine("}");}static void Main(){ // ...}

What do these empty lines serve for?

Page 21: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Breaking Long Lines Break long lines after punctuation Indent the second line by single [Tab] Do not additionally indent the third

line Examples:

21

DictionaryEntry<K, V> newEntry = new DictionaryEntry<K, V>(oldEntry.Key, oldEntry.Value);

if (matrix[x, y] == 0 || matrix[x-1, y] == 0 || matrix[x+1, y] == 0 || matrix[x, y-1] == 0 || matrix[x, y+1] == 0){ …

Page 22: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Incorrect Ways ToBreak Long Lines (in

C#)

22

if (matrix[x, y] == 0 || matrix[x-1, y] == 0 || matrix[x+1, y] == 0 || matrix[x, y-1] == 0 || matrix[x, y+1] == 0){ …

if (matrix[x, y] == 0 || matrix[x-1, y] == 0 || matrix[x+1, y] == 0 || matrix[x, y-1] == 0 || matrix[x, y+1] == 0){ …DictionaryEntry<K, V> newEntry = new DictionaryEntry<K, V>(oldEntry .Key, oldEntry.Value);

Page 23: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Breaking Long Linesin C# and JavaScript

In C# use single [Tab] after breaking a long line:

In JavaScript use double [Tab] in the carried long lines:

23

if (matrix[x, y] == 0 || matrix[x-1, y] == 0 || matrix[x+1, y] == 0 || matrix[x, y-1] == 0 || matrix[x, y+1] == 0){ matrix[x, y] == 1;}

if (matrix[x, y] == 0 || matrix[x-1, y] == 0 || matrix[x+1, y] == 0 || matrix[x, y-1] == 0 || matrix[x, y+1] == 0) { matrix[x, y] == 1;}

Page 24: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Alignments All types of alignments are considered harmful Alignments are hard-to-maintain! Modifying one line of code shouldn’t

require modifying several others Incorrect examples:

24

int count = 0;DateTime date = DateTine.Now.Date;Student student = new Student();List<Student> students = new List<Student>();

matrix[x, y] = 0;matrix[x + 1, y + 1] = 0;matrix[2 * x + y, 2 * y + x] = 0;matrix[x * y, x * y] = 0;

Think about renaming Student to

SchoolStudent

Page 25: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Automated Tools Take advantage of your IDE to help

formatting the code [Ctrl+K+D] Automatic alignment Indentation

Style Code analysis Visual Studio – StyleCop

http://code.msdn.microsoft.com/sourceanalysis

Eclipse – CheckStyle http://sourceforge.net/projects/eclipse-c

s/ JSHint, JSLint – JavaScript code

analysis (all IDEs) http://www.jshint.com/,

http://www.jslint.com/

25

Page 26: Any fool can write code that a computer can understand. Good programmers write code that humans can…

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезанияASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET

курсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGapfree C# book, безплатна книга C#, книга Java, книга C# Дончо Минков - сайт за програмиране

Николай Костов - блог за програмиранеC# курс, програмиране, безплатно

?? ? ?

??? ?

?

? ?

??

?

?

? ?

Questions?

?форум програмиране, форум уеб дизайн

курсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезанияASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET

курсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGapfree C# book, безплатна книга C#, книга Java, книга C# Дончо Минков - сайт за програмиране

Николай Костов - блог за програмиранеC# курс, програмиране, безплатно

?? ? ?

??? ?

?

? ?

??

?

?

? ?

Questions?

?

Code Formatting

http://academy.telerik.com

Page 27: Any fool can write code that a computer can understand. Good programmers write code that humans can…

Free Trainings @ Telerik Academy

C# Programming @ Telerik Academy csharpfundamentals.telerik.com

Telerik Software Academy academy.telerik.com

Telerik Academy @ Facebook facebook.com/TelerikAcademy

Telerik Software Academy Forums forums.academy.telerik.com