Skip to content

Latest commit

 

History

History
87 lines (66 loc) · 2.42 KB

Methods.md

File metadata and controls

87 lines (66 loc) · 2.42 KB

Métodos

As regras abaixo são validas para todos os níveis de acesso (private, protected, internal e public).

  • Pascal Case: DoItNow

  • Nomes devem representar a ação que está sendo executada.

  • Tente quebrar o comportamento do método de maneira que o fluxo do algoritmo não fique grande e possa ser lido de forma fluída e contínua, sem a necessidade de realizar saltos no arquivo de código fonte. Evite separar o comportamento de um método em blocos separados por linhas em branco. Tente extrair o comportamento destes blocos para outros métodos privados e dê nomes significativos para estes.

  • Ao utilizar coleções em retornos ou parâmetros defina-os como IEnumerable sempre que possível.

Ruim:

var transactions = this.GetTransactions();

public IList<Transaction> GetTransactions()
{
    //do anything that returns IList<Transaction> at the end...
}

var clients = this.GetClients();
public List<Client> GetClients()
{
    //do anything that returns List<Client> at the end...
}

Bom:

var transactions = this.GetTransactions();

public IEnumerable<Transaction> GetTransactions()
{
    //do anything that returns IEnumerable<Transaction> at the end...
}

var clients = this.GetClients();
public IEnumerable<Client> GetClients()
{
    //do anything that returns IEnumerable<Client> at the end...
}

var clientsList = clients.ToList();
  • Sempre valide seus parâmetros de métodos públicos para evitar side effects em lugares indesejados.

    Ruim

     public void Foo(object someParameter)
     {
     	this.Bar(someParameter.SomeField);
     }

    Bom

     public void Foo(object someParameter)
     {
     	if(someParameter == null)
     	{
     		throw new ArgumentNullException(nameof(someParameter));
     	}
     	
     	this.Bar(someParameter.SomeField);
     }
  • Para verificações de parâmetros em construtores, utilize o operador null coalescing

     public class Foo
     {
     	private object someField;
    
     	public Foo(object someParameter)
     	{
     		this.someField = someParameter ?? throw new ArgumentNullException(nameof(someParameter));
     	}
     }

Home

Próximo

Anterior