Engenharia de software

160
O que há de errado com referências circulares?

Hoje, participei de uma discussão de programação em que fiz algumas declarações que basicamente supunham axiomaticamente que referências circulares (entre módulos, classes, o que for) geralmente são ruins. Depois que terminei meu discurso, meu colega de trabalho perguntou: "o que há de errado nas...

158
Por que as interfaces são úteis?

Eu tenho estudado e codificado em C # há algum tempo. Mas, ainda assim, não consigo entender a utilidade das interfaces. Eles trazem muito pouco para a mesa. Além de fornecer as assinaturas da função, eles não fazem nada. Se me lembro dos nomes e assinaturas das funções que precisam ser...

156
Exceções: Por que jogar cedo? Por que pegar tarde?

Existem muitas práticas recomendadas conhecidas sobre o tratamento de exceções isoladamente. Conheço bem o que fazer e o que não fazer, mas as coisas ficam complicadas quando se trata de práticas recomendadas ou padrões em ambientes maiores. "Jogue cedo, pegue tarde" - já ouvi muitas vezes e ainda...

154
Qual é a vantagem de currying?

Acabei de aprender sobre curry e, apesar de entender o conceito, não vejo grande vantagem em usá-lo. Como um exemplo trivial, uso uma função que adiciona dois valores (escritos em ML). A versão sem curry seria fun add(x, y) = x + y e seria chamado como add(3, 5) enquanto a versão ao curry...