Tag Info

Hot answers tagged

8

Hard code and refactor when you need it. Time is money, yadda-yadda, is it worth the time/money to have the unused feature? Also, it's not hard to do later as much as it is tedious. Pawn that task off to a junior developer when the need arises. Finally, when the time comes, some automated tools may get you most of the way there. Such as Eclipse's string ...


7

He doesn't mean little IDE utilities that create boilerplate for you, which you must modify. He's referring to more comprehensive code generation that you shouldn't have to touch. You make changes to the higher level and regenerate. The canonical Unix example would be Yacc, which uses a high-level grammar to generate complex parsing code. Other examples: ...


6

Making applications multi-language does take some additional development effort. You can either invest that effort right from the start, every day a bit. Or you can invest that effort afterwards, when you have written >100K lines-of-code. Fact is, the sum of the needed efforts in both cases is not so very different as you might think. The first approach ...


4

YAGNI is often in opposition to other established principles and/or best practices. Other examples include several of the SOLID principles, which are largely about structuring your code to make certain kinds of change easier in future. But what if you don't ever need to make those changes? Then the extra work involved in, say inverting the dependencies ...


3

In basic networking you have end to end. That is what I would call connected. TCP is an end to end protocol. You get a delivery receipt. That is nice but there is overhead with an end to end communication. You also have connectionless communication such as UDP or IP. You send it but do not get a delivery receipt. A good book is Computer Networks and ...


2

In networking, the technical term "connection" refers to a session where data is streamed (transmitted & received in-order). Sessions have a set-up and a tear-down phase where a channel (which can be virtual) is created & destroyed. TCP and ATM have connections, UDP doesn't. If you're not using the technical term and wanted to include all types of ...


2

With just a few exceptions, code, data and configuration should be separated. Hard-coding is generally considered a bad practice. You should put UI text into separate file just so you know where to find it, not because you might need i18n. This will not take much longer than hard-coding, but maintainability will be better. Also with external resource file ...


2

There is a quote attributed to Einstein (probably a variation on a real one): “Everything should be made as simple as possible, but no simpler.” And that is more or less the approach I take when confronted with the SOLID vs YAGNI tradeoff: apply them alternatively, because you never know if a program is 'throw-away' code or not. So, just add a layer ...



Only top voted, non community-wiki answers of a minimum length are eligible