Documente Academic
Documente Profesional
Documente Cultură
BOAS PRTICAS DE
PROGRAMAO
(Modelagem e Programao Orientada Objetos)
Recife
Maio/2012
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. 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:
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
}
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.
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
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