Javascript – Design Coding e voltando a postar.

Oi povo!

Mil desculpas novamente por me ausentar para aqueles que costumavam seguir o blog. Para aqueles que não seguiam ou não gostavam fodam-se rsrsrs. Brincadeira.

Então, voltando novamente a postar. Para não passar pela inconveniência de pedir novamente desculpas, desta vez não farei mais promessas. Ou seja, não prometerei ser mais ativo no blog etc, o ruim de fazer promessas é ter de cumprí-las =/.

Lembro que da última vez que postei, falei sobre o Jails. Projeto pessoal no qual eu dedicava um certo tempo para desenvolver e que me ajudou muito. Vi outros posts que fiz e percebi que amadureci, mudei algumas coisas, mudei a forma de pensar… Alguns posts hoje para mim podem não fazer mais tanto sentido, embora não os ache errados. Apenas acho que precisamos modificar com o tempo, com novos problemas, novos desafios.

O que servia ontem, hoje já pode não servir ou pode não ser o ideal. O blog tem me ajudado a inclusive perceber esta evolução, essa mudança de pensamento e é muito útil para refletir e inovar nas idéias, nos pensamentos.

Colocando mais sentido à essa filosofia toda, o Jails é um dos melhores projetos que fiz no sentido de transformar minha cabeça, de assimilar um padrão que para mim era difícil de entender, o padrão MVC. Ele foi e é útil para entender todos os aspectos deste padrão e me ajudou muito a desenvolver essa filosofia.

Porém hoje, não é o padrão MVC que tem me ajudado mais na abstratação dos novos problemas que tenho enfrentado. Mais futuramente falarei sobre as técnicas que têm me ajudado mais no desenvolvimento e na arquitetura da programação em Javascript.

Como estou enferrujado na arte de postar, quero deixar este post um pouco mais superficial e mais curto e mostrar o que mudei na forma de programar de uma maneira mais sutil, que é a forma como codifico minhas classes, meus objetos.

Eu não vou citar as formas como codificava antigamente, porque está tudo no blog, quero evitar redundância, para quem estiver curioso sugiro ver os posts mais antigos.

HOJE, estou evitando aquele bando de letras maiúsculas e colocando uma função que guarda todo o meu escopo, deixando o código mais protegido. É uma das mudanças que tive na forma de programar.

Agora meu “Design Coding” para classes é assim:


;(function(namespace){

	//Static
	var
		instancias;

	namespace.Pessoa = {

		_class :function(arg){
			var privada;

			this.getter = function(){
				return privada;
			};

			(function __initialize(){
				// begin settings
				instancias++;
			}).call(this);
		},

		create :function(arg){
			return new this._class(arg);
		}
	};

	function generic_private_function(){
		// do stuff..
	};

})(window);

1 – Agora englobo todas as classes numa grande função anônima. Isto é bem antigo e muito utilizado para guardar o escopo das funções, das variáveis, para não ficar aquela zona de variáveis públicas. “namespace” me ajuda a guardar o escopo em que meu objeto é criado, neste caso é o window, portanto quero que Pessoa seja uma variável pública.

2 – Variáveis estáticas privadas! Antes da classe, agora deixo um espaço para variáveis que são estáticas e não são acessíveis, portanto privadas.

3 – O método _class com underline ao invés do antigo e horroroso Class com c maiúsculo. É uma das poucas aplicações que utilizo a convenção de underline para designar variáveis privadas.

Eu sinceramente acho que as variáveis privadas não precisam de underline, quem codifica bem em Javascript sabe que as privadas são as que não possuem this antes ou são propriedades. É lógico para mim que this.nome é público e var nome é privado. Não é necessária convenção. PORÉM, neste caso, class é um nome reservado, assim como self. E nestes casos, SOMENTE nestes casos, acho que faz sentido o underline antes.

4- Função initialize(). É basicamente um construtor, embora _class já seja um construtor, mas é apenas uma convenção que defini para saber que aquele método é iniciado para setar certas variáveis no momento de sua instância. Não gosto de poluir a _class configurando várias coisas, chamando métodos etc. Pra mim fica muito desorganizado. Ela é um método privado e não precisaria ter nome, porém eu coloco apenas para mostrar que é uma função de inicialização, ela é executada logo depois de todos os métodos da classe serem definidos.

5 – Método público estático create(). Hoje prefiro “pendurar” o mínimo de funções no objeto da classe. Apenas as que realmente serão usadas. Antes eu costumava pendurar muitos métodos sem muito sentido. O método create é um shortcut para criar a instancia do objeto. Ao invés de usar new Pessoa._class que pode ser muito estranho, é possível apenas criar o objeto usando Pessoa.create(). E o underline do class serve como um warning, que aquele método deve ser usado em raros casos, como heranças e outras mágicas.

6 – E por fim: Funções privadas genéricas.
Por fora da classe, agora crio funções de propósito geral que não necessáriamente precisa estar dentro da classe.

Antigamente eu fazia muito disso, criava uma classe com vários métodos e todas as instâncias herdavam estes métodos que nem sempre eram necessários serem herdados. Com isso o objeto ficava grande desnecessáriamente. Muitas das tarefas que existem podem ser realizadas por estas funções sem que sejam métodos de instância.

Assim você pode criar n instâncias de objetos que apenas utilizam a mesma função única e genérica para certas tarefas. É meio óbvio, mas apenas percebi isso com o tempo.

Estou muito longe de poder dizer o que deve ser feito na codificação em Javascript, porém, posso com certeza compartilhar a forma como eu codifico, pois acredito que a forma como se codifica ajuda tanto na abstratação do problema, como na hora da manutenção, na hora de alguém entender toda a lógica do seu raciocínio.

Mexo muito com código de terceiros, e percebo que poderiam ser menos traumáticos e penosos se seguissem uma lógica em sua construção e também uma certa beleza =).

Herdo algumas características de outras linguagens para definir meus padrões de desenvolvimento e criar meu “Design Coding”. Assim como também herdo caracterísicas de códigos de outros desenvolvedores que admiro e respeito.

Como sempre, estou aberto à sugestões e sinta-se à vontade para postar seu código, como cria objetos, como cria classes, métodos etc. Acho interessante para o próprio desenvolvimento coisas novas e diferentes =).

Um grande abraço!! =D

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s