Boas técnicas de programação
Array ou hash?
Quando eu uso um array? Quando eu uso uma hash?
A estrutura do livro de endereços é um bom exemplo de quando se deve usar cada um..
- Se você quer dados ordenados, geralmente você quer um array.
- Se você tem uma coleção de dados díspares, com relação definida (ex. nome, endereço e telefone), você procura uma hash.
- Se todos os elementos dos seus dados estão sob uma mesma categoria (ex. um grupo de nomes), um array é uma boa escolha.
No exemplo do livro de endereços, o endereço e estruturas das pessoas contém dados díspares. Então as representamos com as hashes.
O próprio livro de endereços continha dados de uma mesma categoria (pessoas) e nós desejamos poder classificá-las. Então o array foi a mlehor escolha.
Nome de variáveis
Quando você escrever estruturas de dados mais complexas, torna-se importante que você escolha bons nomes para as variáveis.
Arrays
Um array representa uma coleção de coisas "iguais". Como um grupo de carros, um grupo de nomes, etc. Você pode refletir isso usando um plural como nome da array. Por exemplo:
- Se cada elemento da array é um carro, o array pode se chamar carros.
- Se cada elemento da array é um nome, o array pode se chamar nomes.
Dessa forma o nome da variável lembra que trata-se de um array, e ao mesmo tempo é lida como English.
Hashes
Ao lidar com hashes, é importante que você escolha bons nomes para as keys da hash. Um bom nome é o que seja claro, descritivo e fácil de lembrar:
Bom nome para key : "first name"
Péssimo nome para key: "1stname"
Como as keys são autorizadas a ter espaços, não há desculpa para colocar "1stname" em uma key.
Comentários
Quando você escrever programas mais complexos, torna-se muito importante que você inclua comentários claros que expliquem o que está tentando fazer.
Estruturas aninhadas
Em geral, é melhor não embolar estruturas. Se você utilizar uma boa identação e bons nomes, vai ficar bom.
Dê uma olhada estes exemplos:
Bom:
# Joe's address
joe_addr = {
"street" => "43 Main St. W",
"city" => "Washington",
"state" => "DC",
"zip" => "29847"
}
# Joe
joe = {
"first name" => "Joe",
"last name" => "Smith",
"address" => joe_addr
}
|
# Joe
joe = {
"first name" => "Joe",
"last name" => "Smith",
"address" => {
"street" => "43 Main St. W",
"city" => "Washington",
"state" => "DC",
"zip" => "29847"
}
}
|
joe = {
"first name" => "Joe",
"last name" => "Smith",
"address" => {
"street" => "43 Main St. W",
"city" => "Washington",
"state" => "DC", "zip" => "29847"
}}
|