this post was submitted on 19 Feb 2024
39 points (95.3% liked)

Programming

17310 readers
288 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 [email protected]



founded 1 year ago
MODERATORS
 

I'm just generalizing, like if you want to copy some cleaver feature or modify some Python program you came across, what are the red or green flags indicating how well your (or particularly some hobbyist's/your early learning self's) results are likely to turn out?

Also how can you tell when reading into such a project is going to be a major project that is beyond the scope of you ultimate goals. For instance, I wanted to modify Merlin 3d printer firmware for hardware that was not already present in the project, but as an Arduino copy pasta hobbyist, despite my best efforts, that was simply too much for me to tackle at the time because of the complexity of the code base and my limited skills.

How do you learn to spot these situations before diving down the rabbit hole? Or, to put it another way, what advice would you give yourself at this stage of the learning curve?

you are viewing a single comment's thread
view the rest of the comments
[–] HamsterRage 2 points 8 months ago* (last edited 8 months ago)

For me, it's mostly Java and Kotlin. I look for the same kind of things. Things that I like to see:

  • Short methods.
  • Small classes
  • Sensible packages
  • Variables declared to Interfaces not implementations
  • Single Responsibility Principle applied.
  • DRY applied.
  • Good names for variables and methods
  • Few instance variables
  • Few static members
  • No comments, because you don't need them
  • Uses lambdas, Streams and Optional
  • No empty Catch{} blocks
  • No f*&^*cking! arrays.

I can generally tell in a few minutes if something is going to be a pain to work with.