Não precisa ter apenas um único método para ser simples.
Se trata de ser objetiva e poder ser testada
Fique atento ao ouvir frases como esta ou similares
salvo raras exceções
Muitas vezes seguimos conceitos ao pé da letra.
Pensamos estar otimizando.
Quando na verdade estamos adicionando complexidade ao entendimento do objetivo a ser entregue.
// Ruim:
function createFile(name, temp) {
if (temp) {
fs.create(`./temp/${name}`);
} else {
fs.create(name);
}
}
// Bom:
function createFile(name) {
fs.create(name);
}
function createTempFile(name) {
createFile(`./temp/${name}`);
}
Não queira adicionar features a sua linguagem.
Pode ser que um dia ela adicione...
// Ruim:
Array.prototype.diff = function diff(comparisonArray) {
const hash = new Set(comparisonArray);
return this.filter(elem => !hash.has(elem));
};
// Bom:
class SuperArray extends Array {
diff(comparisonArray) {
const hash = new Set(comparisonArray);
return this.filter(elem => !hash.has(elem));
}
}
...e seu software quebre.
O entrelaçamento aumenta a complexidade combinatoriamente
Para sermos capazes de mudar um sistema existente, precisamos entendê-lo para decidir como e onde aplicar as mudanças
Mas passava em todos testes, linters e type checks...
As coisas acontecem rapidamente, mas a complexidade acumulada matará o projeto com o tempo.
O projeto começa mais devagar porque é preciso pensar bem, consequente-mente , isso leva tempo...
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec metus justo. Aliquam erat volutpat.
export const isValidJSON = (text: string) => {
return /^[\],:{}\s]*$/.test(
text
.replace(/\\["\\\/bfnrtu]/g, '@')
.replace(
/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
']'
)
.replace(/(?:^|:|,)(?:\s*\[)+/g, '')
);
};
export const ifJSON = (value: string) => {
return JSON.parse(value) && !!value ? JSON.parse(value) : value;
};
Significa traçar juntos
Significa colocar junto
- Antoine de Saint-Exupéry