I agree with GitHub being bad, but the meme’s content is worse and I’m afraid that there are people who agree with it. I don’t like GitHub or Microsoft but since I get their stuff for free I do use but I’d love to use something that’s open and supports git properly.
It’s just another option, don’t gotta use it. Maybe you find yourself needing something like this, and the only other choice is making it public. At least with friend classes, you know which classes are friends so you can go look for any dependencies
There’s infinite ways to organize code. In C# or Rust where this isn’t an option, you might use nested classes or traits hidden behind a module/namespace.
Good use cases are data structures with associated helper classes. For example, a collection/tree and an iterator/tree-walker for working with elements of the collection. Or for something like a smart memory allocator (an arena or slab allocator), you might use a friend-class to wrap elements returned from the allocator, representing their connection back to it (for freeing up when done or to manage the allocation structure in ie a heap or sorted tree).
It allows for more fine grained access control and to implement afterthoughts.
Think having some private function that can break things if called improperly, but also allow you to avoid significant overhead when calling it the correct way. For example you could be avoiding input validation in a public wrapper for that function. If your friendly class already does it, or cannot produce invalid inputs, there is no need for that.
You could also implement logging after the fact, because your friendly logger object to read private members.
Arguably it’s a questionable design decision tho, as you could do all of this in other ways and it basically breaks any guarantees private would usually give you.
Totally agree with this. I was trying to do CSS theming on my personal website on SDF to try and make it look nicer but I gave up and just went without it because it never worked right. It’s a crappy website anyway with a lot of problems (doesn’t have correct margins so on anything outside specific resolutions it looks wonky).
How do you remember those days and not think things are way better now? CSS can still have weird behavior, but it’s nothing compared to doing everything through one off html attributes and trying to position things with float hacks and dealing with browser specific bugs. Despite its problems, as someone who has made websites through every Internet era, things have gotten better and better.
flexbox made things so much easier, but still hard. There are just too many rules to keep in your head about display and position and how they affect other attributes. And the box model… wow. margin, border, padding, content, but he attribute is box-sizing and it has border-box and content-box, but not the others.
IINM it was written by people who came from print media (just like HTML) and that stuck.
unless you inherit a large base written by someone who is bad at it where their approach seemed to be to write new bad rules in attempt to cover up previous bad rules and so on. we all know how supportive employers are at addressing technical debt. (site redesign cant come soon enough)
Not sure about your particular situation but there’s also the possibility that the bad CSS was good CSS when it was written and over time that got superseded by advancements in both technology and practice.
Or simply different styles and/or skill levels were mixed. I’m currently sifting through a code base that I know for a fact started out goodish, but through multiple team reorgs and lax standards/tight deadlines it devolved into a hot mess. A major contributor being that most of the devs were inexperienced in the framework and just did what they thought was right.
Even supposedly senior devs often have a “I know best” mentality and when they get their hands on a code base do it their way, with the result that after something went through a couple of hands you have a mess of different coding styles and even different software design choices in the same code base, or in other words, and unmaintainable mess.
As someone that has gone through some of the available online tutorials like freecodecamp, and has no real world experience, especially in a team setting, I think I agree with you. I wouldn’t say it’s hard, but I do feel it’s unnecessarily complicated in some areas. Some naming conventions are unintuitive, the cascading inheritance can get confusing especially with multiple hands working on something, and from my experiences, there’s minimal if any effort put into best practices, so everyone does things a little different.
programmer_humor
Hot
This magazine is from a federated server and may be incomplete. Browse more on the original instance.