0

Hello, everyone ๐Ÿ‘‹. I am a newcomer when it comes to JavaScript. I come from an OOP background (C# and Java). I've recently learned that ES6 has a class keyword that preforms similarly (but not exactly) to common OOP languages. Normally I would be inclined to use this feature in my projects; however, it came to my attention that the usage of class in JavaScript seems to be heavily discussed (mostly in a negative light). My questions to this community are:

  • Should it be used often, sparingly, or be outright avoided?
  • What are its advantages and disadvantages?
  • Are there specific cases where the usage of class excels?

Please share your thoughts.

top 6 comments
sorted by: hot top controversial new old
[-] nick@campfyre.nickwebster.dev 1 points 1 year ago

Whatever you do, I'd recommend using Typescript to give you some type safety with your JS.

[-] DonjonMaister@programming.dev 0 points 1 year ago

TypeScript is next on my list. The loose typing of JavaScript drives me a little nuts sometimes ๐Ÿ˜….

[-] fidodo@lemm.ee 1 points 1 year ago* (last edited 1 year ago)

In that case you will love typescript. I'm not sure what other imperative languages have both type inference and structural typing.

[-] fidodo@lemm.ee 1 points 1 year ago* (last edited 1 year ago)

My opinion is you should use it when it's useful, but not when it's unnecessary. Their main use case is when you need to couple the functionality of functions to a shared state, and it's particularly useful when you have multiple interdependent functions that need to be tied to multiple codependent states.

I find it relatively rare when I really need to use a class. Between first class functions and closures and modules and other features, I find JavaScript has a lot of tools to avoid needing classes. Classes add complexity so I only use them when the complexity they add is less than the complexity of the task they're needed for.

[-] hairyballs@programming.dev 1 points 1 year ago* (last edited 1 year ago)

I don't like/use the class keyword in JS, because I quite like the paradigm with prototypes & stuff, and that keyword tries to make it fit into a totally different paradigm, which doesn't really work IMHO.

With TS, I find it even more useless, because I can use TS as a functional language, with POD, functions and interfaces only. I've written entire projects without ever using and needing this keyword, which is a proof IMHO that it's an unnecessary addition. Not sure how unpopular is my opinion tho ๐Ÿ˜…

BTW, I've developped a few strats to have my own style in TS that I like quite a lot. I can tell more if you're interested.

[-] MajorHavoc@lemmy.world 1 points 1 year ago

You've asked about my favorite soap box! Thank you.

If possible, read this in the voice of that fast ad-copy guy who does medical disclaimers:

Classes suck in Java. Classes suck in C#. Classes suck in JavaScript.

Getting down in the weeds a bit, but bear with me:

Class objects are usually a crutch for keeping needless complexity isolated, but babied like a pet, rather than getting rid of it. A particular sign that this is happening is if there's inheritance in play, or a factory method.

Inheritance is bad and it should feel bad.

Most factory patterns owe more to a developer's massive ego, than to any emergent elegance in the problem space.

Everything good that comes from classes comes from interfaces. Interfaces are great, and they can do everything that classes can, but in a procedural way.

This message was brought to you by that weird cult some of us join after we try Haskell for the first time. It's a great cult. We have cookies every other Friday.

this post was submitted on 30 Jun 2023
0 points (NaN% liked)

Programming

16971 readers
237 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS