Brincando com Fogo
Sem comentários….
Sem comentários….
Impressionante o quanto se pode ser criativo, esses artistas de rua(alguns) sabem bem o que fazem, veja o vídeo!
Olá Galera, está aqui mais um motivo para comprar um IPhone.
Uma série de aplicativos interessantes são desenvolvidos a cada minuto e o que vamos mostrar é um que particularmente achei muito interessante.
Imagine uma bateria eletrônica com agilidade de resposta e com boa qualidade nos sons no seu Iphone….
Bem, é disso que estamos falando.

O programa tem diversos kits de percursão, vai do rock até o mambo, muito legal!!!
Segue o video do aplicativo funcionando:
Inté
Antigamente existiam as picaretagens. Um dia vieram as picaretagens . Depois as eletrônicas, e hoje as boas picaretagens são todas USB. Afinal, se é para não funcionar muito mais chique se não funcionar via USB.
Idealmente seria via Bluetooth, tudo fica melhor com Bluetooth, mesmo as coisas que não funcionam. Mas na falta, o USB ainda atende as expectativas irrealizáveis. Como por exemplo nesta bagaça aqui:

É um ozonizador? Um alto-falante? Aquecedor?
Não, é um mosquito-killer repelator tabajara USB!
Em teoria (e bota teoria, Jorge) ele emite um sinal ultra-sônico que espanta mosquitos, em um incrível raio de 1,5m². Você sabe, igual aos espanta-mosquitos que não funcionam e são vendidos pelos camelôs, ou os mais caros que também não funcionam e aparecem no 011-1406. Ou os que não funcionam mas sua sogra dá piti se não acha na bagagem, quando vão passar o final de semana em Maricá.
Por sorte o preço de não funcionar é barato, custa apenas US$5,69. Se você quiser testar o site do produto é este aqui.
Existem três tipos de convenções de nomenclatura. São eles: Pascal Case, Camel Case e Upper Case. Em todas as convenções se refere ao uso de maiúsculas ou minúsculas nos nomes. Todas se aplicam a nomes formados por várias palavras.
A primeira letra do identificador e as primeiras letras das palavras subseqüentes são maiúsculas.
Exemplo:
|
BackColor |
A primeira letra da primeira palavra é em minúscula, e as demais palavras subseqüentes iniciam com maiúscula.
Exemplo:
|
backColor |
Todas as letras são maiúsculas. Usada somente para constantes.
Exemplo:
|
CHAVE_CRIPTOGRAFIA = String(‘#F$%A&DH’); |
| Tipo |
Estilo |
Obrigatório |
| Classes |
PascalCase |
TClienteCadastro (Utilizar T no início) |
| Eventos |
PascalCase |
ValueChange |
| Variáveis |
PascalCase |
RedValue |
| Interface |
PascalCase |
IDisposable |
| Métodos |
PascalCase |
ConverteValor() |
| Nome de Unit |
PascalCase |
ClienteCadastroForm.pas |
| Propriedade |
PascaCase |
BackColor |
| Propriedade Public |
PascalCase |
RedValue |
| Parâmetro de Métodos |
PascalCase |
ANomeParametro |
| Propriedade Protected |
PascalCase |
RedValue |
Propriedade Private
|
PascalCase |
DomainUser |
Constantes
|
UpperCase |
CODIGO_SISTEMA
|
Numeradores
|
camelCase |
(stAberto, stFechado, stDesconhecido) |
Nomear corretamente objetos, componentes, arquivos, pastas, enfim, elementos em geral, é muito importante para um bom entendimento do projeto como um todo. Um simples arquivo nomeado errado, ou sem um padrão definido, pode confundir e prejudicar uma futura manutenção. Portanto, questões importantes devem ser consideradas na nomenclatura do projeto:
· Não utilize notação húngara. A notação é útil somente para nomear componentes e, mesmo assim, quando existe a necessidade de identificação facilitada do mesmo;
· Coloque nomes da forma mais clara possível, visando facilitar a compreensão da finalidade;
· Em nomes compostos, faça combinações entre caracteres maiúsculos e minúsculos para PascalCase;
· Utilize abreviações com responsabilidade, e conforme a necessidade;
· Utilize nomes em português;
· Não utilize espaços, acentos, cedilhas, sublinhas ou caracteres especiais, mesmo que o contexto do que está sendo nomeado permita.
· Nomeie classes objeto com nomes/substantivos;
· Use PascalCase;
· Não use prefixo de classe (por exemplo: CFTP);
· Utilize “T” no início do nome da declaração da classe;
· Não use o caractere de sublinha (_).
Exemplos:
| TUsuario = Class; TUsuarioPadrao = TUsuario; TUsuarioBasico = TUsuario; |
· Nomeie interfaces com substantivos ou adjetivos que descrevem o comportamento;
· Use PascalCase;
· Não use o caractere de sublinha (_);
· Coloque a letra I como prefixo, para indicar que o tipo é uma interface;
· Use nomes similares quando definir pares de classes/interfaces, onde a classe é uma implementação padrão das interfaces. O nome deve diferir apenas com a letra I, que é o prefixo do nome da interface.
Exemplos:
| IUsuarioBase = Interface TppInterfacedObject = class(TObject, IUnknown) |
· Use nomes de parâmetros descritivos. Nomes de parâmetros devem ser descritivos o suficiente para que se possa, baseado no nome do parâmetro e seu tipo, determinar o que o parâmetro significa;
· Use PascalCase;
· Use nomes baseados no significado do parâmetro e não baseados no tipo do parâmetro;
· Não use parâmetros reservados (por exemplo: params, args, etc);
· Não use notação Húngara.
Exemplos:
| procedure FormataNumero(AValor : Inteiro); function FormataNumero(AValor : Inteiro) : Integer; |
· Nomeie Variáveis usando substantivos;
· Use PascalCase;
· Nunca utilize o caractere de sublinha (_);
· Quando for variável declarada na interface, utilize “F” no início do nome.
Exemplos:
|
Private FNomeUsuario : String; FSenhaUsuario : String; Public FNomeEmpresa : String; End; |
Declaração em métodos:
|
Procedure ProcessaUsuario(ACodigoUsuario : Integer); var ValorTemporario : Integer; NomeUsuario : String; begin // end; |
· Nomeie propriedades usando substantivos;
· Use PascalCase;
· Considere ter uma propriedade com o mesmo nome do tipo;
· Quando declarar uma propriedade com o mesmo nome do tipo, defina o mesmo tipo da propriedade;
· Não utilize o “T” no início do nome, “T” é utilizado apenas na declaração de tipos.
Exemplos:
|
private FNomeUsuario : String; public property NomeUsuario : String read FNomeUsuario write FNomeUsuario |
· Use PascalCase para nomear arquivos;
· Para formar o nome, utilize o nome da funcionalidade, o tipo da funcionalidade, e o tipo de formulário (form) que você está utilizando (caso esse arquivo seja de um formulário).
Exemplos de formulários:
| CategoriaCadastroForm.pas UsuarioListaForm.pas EntradaForm.pas UsuarioPesquisaForm.pas |
· Esses objetos ainda seguem a notação húngara;
· Use as abreviações, nas tabelas a seguir, como prefixo dos objetos;
· Use CamelCase para nomear objetos de interface;
· Utilize a seguinte regra: Três consoantes + Nome do Objeto. Exemplos:
- Query da tabela Banco à qryBanco;
- ClientDataSet da tabela Banco à cdsBanco;
- DataSource ligado ao ClientDataSet à dsrBanco.
Exemplos:
| TButton = btnNomeBotao; (Tentar não repetir consoantes). TADOQuery = qryNomeQuery; TSpeedButton = sbtNomeBotao; TActionList = alsNomeActionList; |
· Use CamelCase;
· Form = utilizar “frm” + o nome da funcionalidade;
· DataModule = utilizar “dmd” + o nome da funcionalidade.
Exemplos para DataModule:
| dmdClienteProcesso : TDataModule; dmdClienteCadastro : TDataModule; dmdPessoaUsuarioCadastro : TDataModule; |
Exemplos para Form:
| frmClienteProcesso : TFom; frmClienteCadastro : TForm; frmPessoaUsuarioCadastro : TForm; |
A endentação citada é sobre o número de espaços entre os níveis de tabulação. Utilize como padrão 2 espaços. Este padrão pode ser configurado na janela de opções do Borland Delphi.
Evite escrever linhas com mais de 80 posições entre espaços e caracteres. A idéia é facilitar a compreensão do código e, se possível, visualizar a linha inteira em seu editor de código. Caso alguns trechos de código fiquem muito extensos, poderá ser feita a quebra da linha, entretanto é necessário seguir os seguintes princípios:
· Quebrar a linha após uma vírgula;
· Quebrar a linha após um operador;
· Alinhar a nova linha no início da expressão no mesmo nível da linha anterior.
Exemplos:
|
calculaArea(expr1, expr2, expr3, expr4, expr5); ou var := a *b / (c – g + f) + 4 * z; |
Outra questão importante é a utilização de espaços em branco para endentação. Utilize espaços em branco para endentação, nunca use tabulação!
Os comentários são muito importantes, tanto para relembrar você como para orientar outra pessoa sobre a manutenção do código fonte. Comente tudo que puder, da seguinte forma:
· Utilize as duas barras “//” para comentar trechos de código;
· Utilize “{}” para comentar blocos.
Comentários de cabeçalho são importantes para saber quem foi o responsável pelo desenvolvimento e as alterações aplicadas na unit. Portanto:
· Descreva o propósito da unit;
· Coloque o nome do programador responsável pelo desenvolvimento inicial da unit;
· Coloque o nome do analista responsável;
· O item Revisões será utilizado quando for feita uma manutenção na unit;
· Comentários adicionais são importantes caso as alterações efetuadas nessa unit possam afetar alguma outra funcionalidade do sistema.
Exemplo:
| (*—————————————————————— Propósito da Unit: Programador: Data: ?? Analista Responsável: Revisões: Programador: Data: Descrição da Revisão Comentários adicionais: ——————————————————————*) |
Ao descrever o cabeçalho de um Método:
· Utilize comentário de bloco;
· Não seja detalhista, tente ser objetivo em seu comentário;
· Comente sobre os parâmetros, caso hajam.
Exemplo:
| {——————————————————————- * Propósito do Método: Exibir uma mensagem de Pergunta utilizando MessageBox * * Utilização dos parâmetros: ATitulo = Titulo da Mensagem (Caption). AMensagem = Mensangem que ira aparecer no corpo do MessageBox. Result = Retorna True caso seja selecionado a opção Sim no MessageBox. * Autor / Data: Everson R. Novka 09/06/2006 *——————————————————————} class function TFWMensagem.Pergunta(const ATitulo, AMensagem: String): Boolean; begin Result := (MessageBox(0, PChar(AMensagem), pChar(ATitulo), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = idYes); end; |
· Utilize “//” para comentários de apenas um linha;
· Utilize comentário em bloco ( { … } ) somente em rotinas para comentários de mais de uma linha, a questão visual é fundamental para um melhor entendimento.
Exemplo:
function TfrmMovPontoManual.tbKeyIsDown(const key: integer): boolean;
begin
//Retorna se a tecla especificada está pressionada.
//Gislaine – 26/09/2005
Result := GetKeyState(Key) and 128 > 0;
end;
}
Fonte: www.delphi.eti.br
Mais um video produzido pela Embarcadero com as novidades do Delphi 2010, mas desta vez em português.
Comentários