[quote=celso.martins][quote=elomarns]
Acho que o Maurício não estava se referindo à qualidade do código da aplicação, e sim da sua qualidade externa. Por mais que a idéia nos pareça estranha, um software pode ter sim uma péssima qualidade interna, ou seja, um código horrível e de difícil manutenção, e ainda assim ter qualidade externa, resolvendo bem o problema do cliente. E no fim das contas, para muitos clientes, a qualidade externa é a única que conta ao determinar a qualidade total do aplicativo.[/quote]
[/quote]
Na verdade eu quis dizer com qualidade externa a qualidade percebida pelo cliente, e não apenas uma interface agradável e eficiente, embora isso também determine a qualidade total e externa da aplicação. Ou seja, estou me referindo a um software que efetivamente faz o que o cliente precisa, e que portanto é percebido pelo cliente como um bom produto, possuindo qualidade externa.
Um software desse pode ou não possuir também qualidade interna, mas a maioria dos clientes não se importa, desde que ele resolva os problemas do seu negócio, ainda que com um código medonho.
Por exemplo, vamos supor uma aplicação qualquer que possui registro e login de usuários. Nesse caso, o usuário obviamente só pode ser cadastrado se tiver um login, logo deve haver uma validação para verificar a presença do login, conforme o código abaixo, escrito em Ruby, e que usa o ActiveRecord, do Rails.
[code]class User < ActiveRecord::Base
(…)
def validate
self.errors.add(:login, “O login do usuário deve ser informado.”) if self.login.blank?
end
end[/code]
Por mais que o código acima não seja o mais adequado, uma vez que um validates_presence_of :login já resolveria o problema, ele continua resolvendo o problema de só registrar usuários que informarem o login. Logo, uma aplicação pode ter vários trechos de código assim, usando opções que não são as melhores, ou então até usando os recursos certos, mas com uma legebilidade ruim, caracterizando assim um código ruim. Mas ainda assim a aplicação resolverá o problema a qual foi proposto, já que não há um erro de lógica, apenas mal uso da linguagem e/ou framework.
E no fim das contas o cliente não se importará com esses problemas, já que o aplicativo faz o que ele precisa, e se ele precisar adicionar algo na sua aplicação quem sofrerá com o código ruim não será ele.