DEV Community

Thomas H Jones II
Thomas H Jones II

Posted on

Are there things you see in others' code that just automatically makes you twitch/shudder

I'll admit that I'm a shite coder. That said, there's stuff I see that always makes me shiver when I see it in others' code I've been asked to review. Like, this morning, someone sent out an installation script (BASH) for installing HBSS on production systems. While there was much I didn't like about the script's contents the thing that made me straight-up shudder was the script-author kept using echo -e "\n<MESSAGE_STRING>". Me? If I need to do something like output-formatting in a BASH script, I use printf. (Ab)Using the echo built-in, that way, just makes me go all..

twitchy

Top comments (13)

Collapse
 
sebbdk profile image
Sebastian Vargr

The i' infront of interface names some people add.

WHY. JEBUS. BRIST...just!... no!.. please?

Collapse
 
abhinav1217 profile image
Abhinav Kulshreshtha

I hate them too. I have seen new typescript demos using it and I think it's stupid. I also don't like how some newer programming languages allows you to write implementation code in interfaces( looking at you kotlin ) . Interface should be used to only define structures. Implementations should be left to whatever implements it as the name suggests.

Collapse
 
sturdy_dev profile image
Carson Sturtevant

Can you share why you dislike that so much? I've seen it many times and thought it was the standard.

Collapse
 
abhinav1217 profile image
Abhinav Kulshreshtha

It's not standard, Hungarian notation was used back in the days when programming languages were very low level and IDE's were not a thing. It made a comeback these days because People wrongly assumed it was coding standard for android. Because people are more focused on coding than architectural understanding.

Collapse
 
sebbdk profile image
Sebastian Vargr • Edited

Exactly, everyone think it’s the standard.
But very few really know why. :)

The i’ is not needed because you are denoting a subject type, like horse.

The actual class implementing class will always be a subtype with a more specific name like FastHorse, or IcelandicLeperHorse or some such.

If we actually had a horse’ class, then we would not really need a horse interface, because we would not have subtypes.

This makes the i’ entirely redundant, since interfaces serve like a type, similar to how variables and classes do.

I mean you would not prepend a number variable with n’ would you?

Thread Thread
 
sebbdk profile image
Sebastian Vargr

Counter argument here would be that sometimes knowing the structure type is practical, like if you are using inflection.

But inflection is bad, and again it’s a specific usecase. So making it a global rule’ is kinda overkill.

Thread Thread
 
sturdy_dev profile image
Carson Sturtevant • Edited

Interesting. I've seen the interface match the class when its a service. ex. IDataService and DataService. The 'I' is used to distinguish between the 2 files easily. The interface is needed for dependency injection.

Thread Thread
 
sebbdk profile image
Sebastian Vargr

I have seen that argument somewhere before, but i still wonder.
Would the class definition not suffice as the type?

I mean dependency injection systems usually just manage shared instances.

Maybe it's language dependent and i am just missing a piece of the puzzle. :/

Collapse
 
rachelsoderberg profile image
Rachel Soderberg

I didn't know this was a bad thing! I was taught it in college a couple of years back when we covered design patterns...

Collapse
 
abhinav1217 profile image
Abhinav Kulshreshtha

Bootstrap css or any other css framework which makes you use 4-5 level of unnecessary nested Dom elements just to make a simple form look align. Infact, After watching few old talks from Heydon Pickering last years, I have started focusing on better CSS writing instead of depending on Scss to do my dirty work.

I recently updated a client's website from over 600kb of css to about 160kb (even after adding micro-animations for more modern feel). Total js size reduced from about 1mb to just 280kb using typescript and removing all dom libraries. My IDE is smart enough to type document.getElementById for me.

Collapse
 
sebbdk profile image
Sebastian Vargr

Totally agree, I switched to SCSS mixins for css re-use and never looked back.

Css libraries were a nice lazy thing in the beginning, but there are much better alternatives today. :)

Collapse
 
jsalinas11 profile image
Jordan

Oh boy don't get me started.

Here's one, variable names. They're pretty much never good or worse they're inconsistent. In one context it's an "assignment", in another it's an "entity", and in reality it's neither because they've added a bunch of metadata and massaged it to hell.

Collapse
 
aewens profile image
Austin Ewens

Lines of code exceeding 80 characters and copy/pasting code where a loop should have been used instead.