Sunteți pe pagina 1din 10

Universidade Federal Rural de Pernambuco

Departamento de Estatstica e Informtica DEINFO


Rua Dom Manoel de Medeiros, s/n Dois Irmos 52171-900 Recife-PE
Fone: 0xx-81-33206491

BOAS PRTICAS DE
PROGRAMAO
(Modelagem e Programao Orientada Objetos)

Recife
Maio/2012

Universidade Federal Rural de Pernambuco


Departamento de Estatstica e Informtica DEINFO
Rua Dom Manoel de Medeiros, s/n Dois Irmos 52171-900 Recife-PE
Fone: 0xx-81-33206491

Trabalho solicitado pelo professor Giordano Cabral, para obteno de nota referente
disciplina de Modelagem e Programao Orientada a Objetos, realizado pela aluna
Isabella Rocha Albuquerque Lima, do 3 perodo, do curso de Bacharelado em Sistemas
de Informao.

Sumrio
1. Introduo..............................................................................4
2. Boas prticas de programao.................................................5
2. 1. Endentao/Indentao/Identao......................................5
2.2. Comentrios.......................................................................6
2.2.1. Java..............................................................................6
2.2.2. Python..........................................................................7
2.3. Nomenclatura.....................................................................7
2.4. Windows Forms..................................................................7
2. 5. O Zen de Python................................................................8
3. Anexos....................................................................................9
4. Bibliografia............................................................................10

1.Introduo
Para se obter um cdigo limpo e com boa qualidade, no suficiente apenas seguir
convenes de nomes, classes, variveis, etc.. necessrio que se tenha um padro para
determinadas situaes, para que se possa melhorar no somente o desempenho do
cdigo que est sendo escrito, mas tambm a qualidade de ordenao, para que futuros
desenvolvedores, ao olharem este cdigo em uma manuteno, consigam facilmente
identificar e assim trabalhar em cima do problema e no reaprender tudo o que foi feito,
poupando, desta forma, tempo e dinheiro.
Ao decorrer deste trabalho sero abordadas algumas tcnicas que no so muito
utilizadas no dia-a-dia dos programadores, por serem pequenos detalhes que
influenciam no desempenho e na escrita de um bom cdigo. Essas boas prticas vo
desde ter um cdigo elegante at como melhor-lo.

2.Boas prticas de programao

2. 1. Endentao/Indentao/Identao
Um grande e fundamental ponto na organizao de escrita de cdigos a identao.
Identar organizar horizontalmente de forma hierrquica as linhas de cdigo, de acordo
com o escopo onde elas se encontram. A identao serve como um guia visual para
programadores humanos. Deixa o cdigo fonte do programa mais organizado, mais fcil
de ler, entender e modificar.
A identao varia um pouco de acordo com a linguagem e tem comportamentos que so
convencionados de acordo com o uso dessas linguagens. No existe uma regra definida
para identao.
Exemplo de um algoritmo sem indentao:

Exemplo de um algoritmo indentado:

Enquanto carros andando na rua faa


espere
olhe para um lado
olhe para o outro lado
fim enquanto
enquanto no chegar ao outro lado faa
se pessoa na frente ento
desvie
seno
d um passo
fim se
fim enquanto

Enquanto carros andando na rua faa


espere
olhe para um lado
olhe para o outro lado
fim enquanto
enquanto no chegar ao outro lado faa
se pessoa na frente ento
desvie
seno
d um passo
fim se
fim enquanto

Podemos observar que em um algoritmo identado, a compreenso do cdigo se torna


muito mais rpida. Quanto maior e mais complexo o cdigo, torna-se mais evidente a
necessidade de um cdigo identado.
Em linguagens como o Python, a identao necessria para o funcionamento do
algoritmo.
Tradicionalmente, a identao feita com tabulaes (tecla Tab), com uma tabulao
para cada nvel. O problema que existem alguns estilos de identao que misturam
espaos e tabulaes, e quando se misturam os dois da maneira errada o resultado uma
baguna difcil de ser compreendida.
Ento se o cdigo pode um dia precisar ser lido por outro programador, de bom uso
que se deixe em um comentrio a forma de identao que voc escolheu.

2.2. Comentrios
Como o prprio nome instiga, so notas que podem ser includas no cdigo fonte para
descrever o que se quiser. Assim, no modificam o programa executado e serve somente
para ajudar o programador a melhor organizar os seus cdigos.
Cada linguagem possui uma forma diferente de inserir comentrios. Exemplos:
2.2.1. Java

Exemplo:
Comentrios de uma ou mais linhas {
podem ser iniciados por /* e terminados int a = 10;
por */
int b;
b = a*2;
/* a partir deste ponto, deve-se comear a exibir os
resultados na tela do usurio */
}
Comentrios que terminam no final da
linha so indicados com // . Pode ser
usados desde o incio da linha ou
colocados depois do cdigo funcional,
desde que no haja um caractere de
quebra de linha no comentrio.

Exemplo:
{
int a=10; // declarao de a como int e atribuio do
valor 10
int b; //declarao de b
// a prxima linha calcula b como sendo duas vezes
a
b=a*2;
// daqui em diante deve-se exibir os resultados na
tela
}

Pode-se utilizar comentrios de vrias Exemplo:


linhas em que a primeira linha se inicia
com /** e a ltima termina com */.
//** Comentrio
* comentrio
* comentrio
* ...
*/

2.2.2. Python

Comentr
ios em Python iniciam com o smbolo #
que no seja parte de uma string literal, e
finaliza no fim da linha fsica.

# declara as variveis auxiliares


valor1 = 15; valor2 = 20
# efetua o clculo
soma = valor1 + valor2
# exibe o resultado
print soma

2.3. Nomenclatura
Os estilos definidos so:
- Letra nica minscula (b);
- Letra nica maiscula(B);
- Minsculas(minusculas);
- Minscula com underscores(minsculas_com_underscores);
- Maisculas(MAIUSCULAS);
- Maisculas com underscores(MAIUSCULAS_COM_UNDERSCORES);
- Primeira letra de cada palavra maiscula (CamelCase,CapWords,StudlCaps).
- Abreviaes devem estar todas em maisculas;
- Capitular Mista, sendo que a primeira letra minscula e as demais palavras
esto com a primeira letra maiscula;
No comum usar em Python o padro de prefixos nas nomenclaturas, muito usado
para indicar que tipo de contedo ou tipo de estrutura ou dado aquela nomenclatura
possui.
H tambm os seguintes casos de uso de underscore:
- Como prefixo: indicador de "uso interno" - mas no adequado. Uma instruo como
"from pack import *" no reconhecer as nomenclaturas que usam este tipo de
nomenclatura.
- Como sufixo: uma conveno utilizada para diferenciar das palavras chaves
reservadas em Python;
- Como prefixo com duplo underscore: para definir um atributo de classe;
- Como prefixo e sufixo com duplo underscore: Objetos especiais ou atributos
devidamente encontrados em um 'namespace' controlado pelo usurio.
2.4. Windows Forms
Windows Forms (WinForms) o nome dado para o grfico da interface de programao
de aplicativo (API).
Uma tabela com os componentes, os pr-fixos e exemplos esto disponibilizadas no
anexo 01.
2. 5. O Zen de Python

Zen de Python um conjunto de boas prticas de programao para a linguagem.


Escrito por Tim Peters, ele constitudo por 19 aforismos que remetem a essas prticas.
indispensvel para quem programa em Python e muito til para qualquer
programador. Neste texto encontra-se a traduo do Zen.
"Bonito melhor que feio.
Explcito melhor que implcito.
Simples melhor que complexo.
Complexo melhor que complicado.
Plano melhor que aninhado.
Esparso melhor que denso.
Legibilidade conta.
Casos especiais no so especiais o bastante para se quebrar as regras.
Embora a simplicidade supere o purismo.
Erros nunca deveriam passar silenciosamente.
A menos que explicitamente silenciados.
Ao encarar a ambiguidade, recuse a tentao de adivinhar.
Deveria haver uma e preferencialmente apenas uma maneira bvia de se fazer isto.
Embora aquela maneira possa no ser bvia primeira vista se voc no for holands.
Agora melhor que nunca.
Embora nunca, seja muitas vezes que pra j.
Se a implementao difcil de explicar, uma m idia.
Se a implementao fcil de explicar, pode ser uma boa idia.
Namespaces so uma idia estupenda, vamos fazer mais deles!"

3. Anexos
Anexo 1 Windows Forms
Componente
Componente

Prefixo
Exemplo
Prefixo
Exemplo

Form

frm

frmEntry

DomainUpDown

upd

updPages

Label

lbl

lblHelpMessage

NumericUpDown

nud

nudPieces

LinkLabel

lnk

lnkEmail

TrackBar

trb

trbIndex

Button

btn

btnExit

ProgressBar

prg

prgLoadFile

TextBox

txt

txtLastName

RichTextBox

rtf

rtfReport

Menu

mnu

mnuFileOpen

ImageList

ils

ilsAllIcons

CheckBox

chk

chkReadOnly

HelpProvider

hlp

hlpOptions

RadioButton

rad

radType

ToolTip

tip

tipIcons

GroupBox

grp

grpActions

ContextMenu

cmn

cmnOpen

PictureBox

pic

picIcon

ToolBar

tlb

tlbActions

Panel

pnl

pnlGroup

StatusBar

sta

staDateTime

DataGrid

grd

grdQueryResult

NotifyIcon

nti

ntiOpen

ListBox

lst

lstPolicyCodes

OpenFileDialog

ofd

ofdImage

CheckedListBox clb

clbOptions

SaveFileDialog

sfd

sfdImage

ComboBox

cbo

cboEnglish

FontDialog

ftd

ftdText

ListView

lvw

lvwHeadings

ColorDialog

cld

cldText

TreeView

tre

treOrganization

PrintDialog

ptd

ptdText

TabControl

tbc

tbcOptions

PrintPreviewDialog

ppd

ppdText

DateTimePicker

dtp

dtpPublished

PrintPreviewControl

ppc

ppcText

MonthCalendar

mcl

mclPeriod

ErrorProvider

err

errOpen

HScrollBar

hsb

hsbMove

PrintDocument

prn

prnText

VScrollBar

vsb

vsbMove

PageSetup Dialog

psd

psdReport

Timer

tmr

tmrAlarm

CrystalReportViewer

rpt

rptSales

Splitter

spt

sptDivision

4. Bibliografia

http://www.linhadecodigo.com.br/artigo/126/iniciando-em-boas-praticas-deprogramacao.aspx
http://israelaece.com/post/Boas-Praticas-de-Programacao.aspx
http://escovandobytes.blogspot.com.br/2008/04/padronizao-de-programao-paralinguagens.html
http://pt.wikipedia.org/wiki/Conven%C3%A7%C3%A3o_sobre_configura
%C3%A7%C3%A3o
http://www.vivaolinux.com.br/artigo/PEP-8-Guia-de-estilo-para-codigo-Python?
pagina=6
http://www.ossegredosdoarcano.info/2012/02/python-pep-8-convencao-denomenclatura.html
http://en.wikipedia.org/wiki/Windows_Forms
http://escovandobytes.blogspot.com.br/2008/04/padronizao-de-programao-paralinguagens.html
http://www.arquivodecodigos.net/dicas/python-como-inserir-comentarios-em-seuscodigos-python-831.html
http://programeempython.blog.br/2010/08/definindo-e-usando-funcoes-em-python.html
http://pt.wikibooks.org/wiki/Java/Blocos_e_coment%C3%A1rios_de_programa
%C3%A7%C3%A3o

S-ar putea să vă placă și