James é um projeto Open Source que será a base de todos os meus projetos Orientados a Objetos codificados em Object Pascal.
James
O que é? James é uma coleção de classes e interfaces para projetos verdadeiramente orientados a objetos escritos em Object Pascal. Esta API está sendo escrita em Free Pascal e Lazarus. No entanto, torná-lo compatível com Delphi pode ser possível ou mesmo pode ser um objetivo (estamos dependendo de mais contribuidores para torná-lo possível).
Por quê? Nós não queremos mais escrever o código procedural, nunca mais. Queremos escrever código elegante, limpo e sustentável usando a OOP.
Princípios. O código possui alguns princípios de design:
- Totalmente baseado em interface
- A memória é liberada automaticamente
- Todos os métodos públicos são implementações de métodos de interface
- Todos os métodos públicos retornam uma instância de interface ou tipo primitivo
- Nenhum uso de NULL em argumentos ou retornos de métodos
- Sem algoritmos nos construtores
- Não há getters e setters
- Sem casting ou reflexão utilizando RTTI
- Sem procedimentos e funções, apenas Objetos
Mais informações. Leia mais sobre o James aqui e aqui.
Como contribuir?
Apenas faça um fork do repositório e envie-nos um Pull Request (PR).
Cada PR precisa trabalhar apenas sobre uma única issue ou em uma única responsabilidade.
Por favor, nomeie seu PR usando o mesmo estilo de outros PR já finalizados neste projeto.
Certifique-se de que o seu ramo seja construído sem quaisquer warnings/problemas.
Se você tiver dúvidas ou sugestões gerais, não hesite em enviar uma nova Github issue.
Atualizações
Ainda estamos em uma versão alfa muito precoce, a API pode e vai mudar com freqüência. Por favor, use isso por sua conta e risco, até liberarmos a versão 1.0.
Algumas unidades foram excluídas e outras foram criadas. Classes foram movidas e renomeadas.
Vejamos abaixo as modificações mais recentes:
- PR #18: Só vamos utilizar caracteres ASCII para facilitar o uso no Delphi sem haver problemas de UNICODE (veja mais).
- PR #19: A classe
TStreamBase64
não apenas foi renomeada paraTBase64Stream
, como também está numa nova unidade chamadajames.format.base64.clss
. - PR #20: A unidade
james.data.xml.clss
foi renomeada parajames.format.xml.clss
adicionando um novo prefixoformat
que poderá ser utilizado por outros “formatos” como JSON, INI, etc. - PR #21: As unidades
james.files.*
foram renomeadas parajames.io.*
. - PR #23: Criada uma nova unidade
james.crypto.md5.clss
que, além de adicionar um novo prefixocrypto
para outros tipos de criptografia, também contém classes relacionadas ao MD5. - PR #30: Adicionado as classes que implementam Constraints.
A maioria das modificações são apenas estéticas ou apenas para melhorar a organização. No entanto são modificações necessárias para fazer o projeto crescer com saúde.
Por enquanto é isso. Aguardo seus comentários aqui embaixo.
Até logo.