Uma coisa que trabalhar em Haskell e F # me ensinou é que alguém em uma universidade mais inteligente que eu provavelmente já encontrou uma abstração para o que estou fazendo. Da mesma forma, em C # e programação orientada a objetos, provavelmente há uma biblioteca para "it", seja o que for que eu esteja fazendo.
Há tanta ênfase na reutilização de abstrações na programação que muitas vezes sinto um dilema entre: 1) apenas codificar algo curto e sujo ou 2) gastar o mesmo tempo para encontrar a biblioteca / solução mais robusta de outra pessoa e apenas usá-la.
Como recentemente, um dos codificadores aqui escreveu um (des) serializador para arquivos CSV, e eu não pude deixar de pensar que algo assim provavelmente é muito fácil de encontrar on-line, se ele ainda não vem com o padrão .NET APIs.
No entanto, não o culpo; várias vezes trabalhando no .NET, consertei uma solução com base no que sei, apenas para perceber que havia alguma chamada ou objeto de método ou algo , geralmente na mesma biblioteca, que fazia o que Eu queria e simplesmente não sabia disso.
Isso é apenas um sinal de inexperiência ou sempre existe um elemento de troca entre escrever novo e reutilizar o antigo? O que eu mais odeio é quando encontro uma solução que eu já sabia e esqueci. Sinto que uma pessoa simplesmente não é capaz de digerir as grandes quantidades de código que vêm pré-empacotadas com a maioria dos idiomas atualmente.
fonte
Às vezes, isso é um sinal de inexperiência, seja com a linguagem específica ou com a programação em geral. Às vezes, porém, se o ajuste não for óbvio, é melhor lançar seu próprio código que faça exatamente o que você deseja e nada mais . Bibliotecas genéricas, embora frequentemente úteis, podem ser criadas para requisitos que você simplesmente não possui e, em alguns casos, esse nível de genérico pode torná-los mais problemáticos do que valem.
Exemplo: para meus pequenos projetos individuais, nunca uso uma biblioteca de log "real". Eu uso
print
declarações mais uma pequena configuração ad-hoc. Não quero me preocupar em instalar e configurar uma biblioteca de log que tenha muito mais recursos do que jamais utilizarei, quando asprint
instruções funcionarem bem para meus propósitos. Também não quero outra dependência que possa não ser compatível com a versão do compilador / intérprete que desejo usar, precisaria ser distribuída etc.fonte
Bem-vindo ao mundo da programação. Esta questão será objeto de muitas divergências entre você e seus futuros colegas. Você tem duas opções:
Eu acho que há momentos em que ambas as soluções são apropriadas. Por exemplo, eu preferiria evitar o lançamento do meu próprio analisador CSV do ORM, se puder evitá-lo principalmente porque é um trabalho muito tedioso. Por outro lado, as bibliotecas geralmente são restritas. Eu diria que, para cada projeto em que trabalhei, encontrei bibliotecas que resolveriam meu problema perfeitamente, se não fosse por essa falha. Ou, às vezes, uma biblioteca é exatamente o que você precisa quando começa a fazer algo, mas é mais mal do que ajuda quando você precisa fazer alterações.
No entanto, em geral, desaconselho a tentar encontrar respostas "corretas" porque elas não existem. Em caso de dúvida, basta seguir seu instinto. Uma vez ouvi alguém dizer que a experiência é definida por quantos erros estúpidos você comete. Geralmente, você aprende algo ou faz algo que funciona. De qualquer maneira, não é de todo ruim.
fonte
Isso (ou algo semelhante) muitas vezes aconteceu comigo em um trabalho anterior em que a estrutura estava sofrendo um grave efeito de plataforma interna.
Basicamente, sua base de código evoluiu desde o início do Windows C / C ++ e começou a ser compilada no MFC - e, assim, os mantenedores começaram a misturar o MFC e suas estruturas de dados internas antigas e componentes de janelas. A plataforma interna não estava muito bem documentada, mas era supostamente "o caminho" para fazer as coisas naquele produto, devido a algumas instalações internas que ele fornecia. Muitas vezes, achei mais fácil e rápido escrever minhas próprias coisas do zero (dos fundamentos do MFC), em vez de descobrir como fazê-lo com a estrutura interna da empresa.
(Ok, então isso parece ser quase o oposto do seu ponto inicial - mas o princípio é o mesmo, hehe! Sim, às vezes é realmente mais rápido fazer suas próprias coisas do que gastar tempo e esforço para encontrar um reutilizável existente solução.)
fonte