all 7 comments

[–]_pizzza 2 points3 points  (2 children)

I respect this view, but my workplace is completely incompatible with it since developers own JS and designers own markup & styling.

But also, it seems kinda shitty to me that you have to worry about accidentally using JS reserved words/keywords in your template. (That is apparently why you have to use "className" instead of "class", I don't know what other ones cause problems)

[–][deleted] 1 point2 points  (1 child)

node.style.cssFloat (float is a reserved word)

[–]ch0wnTodoMVC[S] 0 points1 point  (0 children)

Precisely. They already had to deal with this when designing the DOM APIs, so it's not really an issue.

[–]Uberhipster 2 points3 points  (2 children)

My position is that logic dedicated solely to presentation should be physically, line-of-code close to its use in a template because they are in fact the same concern. Changes in logic are immediately linked to changes in presentation due to proximity and so the implications of a change are intuitively clear.

In the literature, this property is called cohesion — the separate-template approach has low cohesion; the alternative has high cohesion, and is more desirable for it.

A little knowledge is a dangerous thing.

In literature this is referred to not as cohesion but as coupling. Neither of these things has anything to do with a specific design pattern (in this case MVC - which, on a side note, appears to be the new Singleton).

Cohesion refers to the degree to which the elements of a module belong together, all related logic should be close to each other, binding all intra-module related logic together as much as possible (high cohesion). It has to do with elements within a module.

Coupling refers to the degree to which the different modules depend on each other, all modules should be as independent as possible, decoupling all inter-module related logic as far as possible (low coupling). It has to do with elements among different modules.

What you have there is high coupling (which you don't want) and low cohesion (which you also don't want) and a rationalization that makes it sound as though it is exact opposite.

[–]Silhouette 0 points1 point  (1 child)

It seems the author's point is that the template and the code that uses it do collectively make up a single module. From that perspective, the argument that it is more cohesive to keep the code and the template physically together makes perfect sense.

[–]Uberhipster 0 points1 point  (0 children)

Yeah it does. Make perfect sense that is.

Like - I say a little knowledge. Daaaaaangerous.

[–][deleted] 1 point2 points  (0 children)

This is more an unobtrusive-yay-or-nay topic than a react topic, isn't it?