Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "variable names"
-
This code review gave me eye cancer.
So, first of all, let me apologize to anyone impacted by eye cancer, if that really is a thing... because that sounds absolutely horrible. But, believe me, this code was absolutely horrible, too.
I was asked to code review another team's script. I don't like reviewing code from other teams, as I'm pretty "intense" and a nit-picker -- my own team knows and expects this, but I tend to really piss off other people who don't expect my level of input on "what I really think" about their code...
So, I get this script to review. It's over 200 lines of bash (so right away, it's fair game for a boilerplate "this should be re-written in python" or similar reply)... but I dive in to see what they sent.
My eyes.
My eyes.
MY EYES.
So, I certainly cannot violate IP rules and post any of the actual code here (be thankful - be very thankful), but let me just say, I think it may be the worst code I've ever seen. And I've been coding and code-reviewing for upwards of 30 years now. And I've seen a LOT of bad code...
I imagine the author of this script was a rebellious teenager who found the google shell scripting style guide and screamed "YOU'RE NOT MY REAL DAD!" at it and then set out to flagrantly violate every single rule and suggestion in the most dramatic ways possible.
Then they found every other style guide they could, and violated all THOSE rules, too. Just because they were there.
Within the same script... within the SAME CODE BLOCK... 2-space indentation... 4-space indentation... 8-space indentation... TAB indentation... and (just to be complete) NO indentation (entire blocks of code within another function of conditional block, all left-justified, no indentation at all).
lowercase variable/function names, UPPERCASE names, underscore_separated_names, CamelCase names, and every permutation of those as well.
Comments? Not a single one to be found, aside from a 4-line stanza at the top, containing a brief description of that the script did and (to their shame), the name of the author. There were, however, ENTIRE BLOCKS of code commented out.
[ In the examples below, I've replaced indentation spacing with '-', as I couldn't get devrant to format the indentation in a way to suitably share my pain otherwise... ]
Within just a few lines of one another, functions defined as...
function somefunction {
----stuff
}
Another_Function() {
------------stuff
}
There were conditionals blocks in various forms, indentation be damned...
if [ ... ]; then
--stuff
fi
if [ ... ]
--then
----some_stuff
fi
if [ ... ]
then
----something
something_else
--another_thing
fi
And brilliantly un-reachable code blocks, like:
if [ -z "$SOME_VAR" ]; then
--SOME_VAR="blah"
fi
if [ -z "$SOME_VAR" ]
----then
----SOME_VAR="foo"
fi
if [ -z "$SOME_VAR" ]
--then
--echo "SOME_VAR must be set"
fi
Do you remember the classic "demo" programs people used to distribute (like back in the 90s) -- where the program had no real purpose other than to demonstrate various graphics, just for the sake of demonstrating graphics techniques? Or some of those really bad photo slideshows, were the person making the slideshow used EVERY transition possible (slide, wipe, cross-fade, shapes, spins, on and on)? All just for the sake of "showing off" what they could do with the software? I honestly felt like I was looking at some kind of perverse shell-script demo, where the author was trying to use every possible style or obscure syntax possible, just to do it.
But this was PRODUCTION CODE.
There was absolutely no consistency, even within 1-2 adjacent lines. There is no way to maintain this. It's nearly impossible even understand what it's trying to do. It was just pure insanity. Lines and lines of insanity.
I picture the author of this code as some sort of hybrid hipster-artist-goth-mental-patient, chain-smoking clove cigarettes in their office, flinging their own poo at their monitor, frothing at the mouth and screaming "I CODE MY TRUTH! THIS CODE IS MY ART! IT WILL NOT CONFORM TO YOUR WORLDLY STANDARDS!"
I gave up after the first 100 lines.
Gave up.
I washed my eyes out with bleach.
Then I contacted my HR hotline to see if our medical insurance covers eye cancer.32 -
Being paid to rewrite someone else's bad code is no joke.
I'll give the dev this, the use of gen 1,2,3 Pokemon for variable names and class names in beyond fantastic in terms of memory and childhood nostalgia. It would be even more fantastic if he spelt the names correctly, or used it to make a Pokemon game and NOT A FUCKING ACCOUNTANCY PROGRAM.
There's no correspondence in name according to type, or even number. Dev has just gone batshit, left zero comments, and now somehow Ryhorn is shitting out error codes because of errors existing in Charmeleon's asshole.
The things I do for money...24 -
Programmers: Always use descriptive variable names.
Mathematicians: Single letter variable names always, ideally from obscure/dead alphabets.
Src: Twitter16 -
Some ideas for variable names. Thank me later :))
1. bool sheet;
2. int entionally;
3. char mander;
4. double penetration;
5. string cheese;
6. long schlong;23 -
Incompetent doesn't even start to describe this one:
1. Uses Google drive instead of an online repository for code sharing
2. Uses multiple files instead of version control
3. Preferred variable names like a, a1, b, temp
4. Didn't like "wasting" space. The result was unreadable unindented code
5. Would rather use deprecated HTML tags rather than proper CSS styling
He was more like the personification of bad coding practices8 -
A sidebar.
Literally just a sidebar.
And yes, this was in Hell.
Its code was spread across at least 40 files, and it used a bunch of freaking global variables to unfurl accordion sections, hide other sections/items, highlight the active item, etc. These were set (and unset!) in controller actions, so if you didn’t unset one, it remained open and highlighted until another action unset it.
Some of the global variable checks (and permissions checks) were done in the individual views, some outside of the `render` statements that include them. Some of them inherited variables from the parent, some from the controller, some from globals. Getting a view to work was trial and error. Oh, and some had their own inline css, some used css classes.
Subsections were separate views, so were some individual items, both sometimes rendered using shared templates, and all of the views and templates had the exact. same. filename. (They were located in different directories, and thus located automagically via implicit relative paths.) So, it was a virtually endless parade of`render partial => “sidebar”`. Which file does that point to? Good luck figuring it out!
Also, comments in several places said adding a new section required a database migration. I never did figure out why.
Anyway, I discovered this because I had an innocuous-sounding ticket to rearrange the sidebar, group some sections/items under different permissions, move some items to another menu, and nest some others differently.
It took me two bloody weeks, and this was when I was extremely productive every day.
Afterward, I was so disgusted by it that I took a day and removed every trace of the sidebar I could find, and rewrote it. I defined the sidebar in a hash, and wrote a simple recursive builder to generate the markup. It supported optional icons, n-level nesting, automatic highlighting of the current item and all parent nodes, compound and inherited permissions, wrapping of long names, hover and unfurl animations, etc. Took me a couple hundred lines of Ruby at the most, plus about the same of css.
Felt so good to remove that blight.5 -
I know a guy, about 50 years old. He is a self-taught programmer since he was young, and he has always used Visual Basic (never anything newer than VB6).
He once needed to interface with a web application I wrote, so I asked him to send me a POST HTTP request. He didn't know what I was talking about. No notion of REST, sockets, HTTP, nothing.
The he showed me his code. Actually, his codes. He had multiple copies of the project, one for each version, and he even kept multiple variations of the software in different separate folders. He probably doesn't know what "version control" even means.
You think this is messy. You didn't see the actual code (it's a huge application!).
Spaghetti all over the place. Meaningful variable names, what are they? Default names for the controls, like button1, button2, etc, with forms with more than 30 buttons and text fields. This was the most incomprensibile code I have ever seen.
You might think that this guy is just a hobbyist.
No.
He sells his applications. To companies. They are obviously full of errors, but they buy them.
Now, if you're still with me, two questions come into my mind:
- why?? I hate this, because it's impossible to prove to a non-technical person that this is *not* software development.
- how do I know that, to someone else, I am not like him? How can I be sure that I know and will know what needs to be known?4 -
Code works.
Rename a variable for clarity.
Third-party lib behaves differently, breaks things.
Change the var names back.
Still broken.
Stash changes and checkout previous commit.
Everything works.
Diff with stash.
No notable changes. (some comments, ...)
Checkout branch again, pop stash.
Broken again.
... What?19 -
When you have been trying to write an algorithm for 5 hours but it still doesn't work and your whole code is one big fucking mess, these variable names appear:6
-
I wonder how the secret service comes up with all these cool names for secret operations they do when i am sitting here thinking what to name one variable for last 30mins. I should probably hire someone from there as a variable namer dev..7
-
Worst experience with cs profs? Oh boy....
Databases lab: "You'll need to work of this snippet, if your IDE tells you it's deprecated you don't need to care about it"
If you want to imagine the quality of the code base we were expected to work upon just think about that attached xkcd comic, basically an undecipherable black box.
The instructions where at the same time micro managing everything (he gave us frickin variable names to use, and no good ones, no the database connection had to be called datbc, yeah very descriptive) and yet so obfuscated that I'm not completely sure he didn't resurrect Kant himself to ghostwrite for him.
He also didn't like us to use any Java feature that was to 'modern', for example for each loops since "they offer no benefit over normal for loops".
Further, everything we wrote had to be documented with a relationship diagram and a uml. So far no problem if he hadn't invented his own flavor of both (which can be read about in his book).
Oh, and he almost failed me because I used a lambda expression in his 'code on paper' exam and this "arrows are a C command" I "must have been confused"... which is glorious coming from the guy who can't get operators and commands straight.1 -
Guy I work with: Hey can I borrow you for a minute
Me: sure. What do you need?
Him: so this is a project me an the other dev worked on
Me thinking: Well I know he did it all and sent you the project so don't tell me you worked on it
Him: so we use it to do this and this and send an email to this new account I made because (2 minute explanation)
Me thinking: I don't care. Just tell me what your issue is! I already know what it is and does from what you told me the last time when you showed me. Which took an hour of my time.
Him: so he sent me this code which is called <Descriptive name> and in the method we have variables call <descriptive name> and it returns a <variable name>
Me thinking: You mother fucker! I don't give a shit what your method is named, what it the variable names are, and you don't need to read through every line of code to me! Just from the descriptive name you just said I know what it does! What the fuck is your issue!?
Him: we also have these other methods. This one is called <Descriptive name> which does...
Me: are you fucking seriously going to read me your code line by line and tell me what you named your variables AGAIN!?
Him: and we named this one <descriptive name>
Me: you mother fucker...
Him: and it calls this stored procedure. (Literally opens the stored procedure and shows me) and it is called...which has parameters called... And it is a select query that inserts
45 minutes later after he finishes explaining all 3 pages of his code and his 5 stored procedures that the other dev wrote...
Him: So anyway, back to this method. I need to know where to put this method. The other dev said to put it in this file, but where do you think I should put it in here? Should I place it after this last one or before it?
Me thinking: You fucking wasted my fucking time just to ask where to place your mother fucking method that the other dev sent to you in a project with only 3 files, all less than 500 lines of code with comments and regions that actually tell you what you should put there and 5 small stored procedures that were not even relevant to your issue! Why the fuck did you need to treat me as a rubber ducky which would fly away if you did have one because you didn't have an issue, you just didn't know where to put your fucking code! FUCK YOUR METHOD!
Me: Where ever you want
Him: Well I think it won't work if I placed it before this method.
I walked away after that. What a waste of time and an insult to my skills and really unchallenging. He's been coding for years and still can't understand anything code related. I'm tired if helping him. Every time he needs something he always has to read through and explain his shit just to ask me things like this. One time he asked me what to name his variable and another his project. More recently he asked why he couldn't get his project he found online to work. The error clearly stated he needed to use c# 7. His initial solution was to change his sql connection string. 😑
He should just go back to setting up computers and fixing printers. At least then he would never be in the office to bug me or the other dev with things like this.7 -
Naming contest:
These two 'new' servers need hostnames.
Names must be within the following constraints:
* Names must be female
* Names must be pronouncable and writable in ASCII standard set of characters.
* Names are preferred to reference to duo's, like sisters, twins, dynamic duo's like chip and dale, but female.
Previous servers were name 'tairu' & 'mairu' (heroic age) and 'karen' & 'tsukihi' (nisemonogatori)
Let's see if the devrant community can surprise me.
Entries will be closed within 48 hours of this post.77 -
For years I've had this friend, since high school, and now we are 21. Our paths had always been different, i decided to go to a technical high school that provides more specialized education (around IT in this case) and he went to a normal high school that provides a more wide range of knowledge and barely anything related to what we both wanted to study. Different tastes for different people huh? Well sure but during that time he was being snobbish towards me because normal high schools are considered more prestigious, or rather, technical high schools are infamous for attracting lazy students or students that don't wanna move up to a university.
We fought a few times over this, sometimes even stopped talking for long periods of time but we always got back together. A few years later, after our university entry exams I joined what roughly translates to technical university, its just more focused on practical IT stuff with a lot of lab courses every semester. He joined a more academically inclined one that is half economics and half IT (applied informatics). And now he has another thing to be snobbish about since the relation between the 2 unis is similar to that between the high schools but I don't care anymore, I don't feel like im missing out on anything with my choices.
3 days ago he called me on discord to check his python script and why it wasn't working. Good Odin that piece of code was worse that anything I've seen. Littered with global variables, inconsistent function and variable names, duplicate code, unused variables. I was honestly shocked and disappointed cos he always mentions different projects he is working on, an aspiring web developer.
I took those 300 hundred lines of atrocity and turned them into 80. But more importantly it was something that worked and did the damn job well. A thing of beauty.
I don't know if he was more surprised that i got it working or that it was so different from his initial "solution".
All of a sudden he is not so dismissive of me...
Fuck you for underestimating me and every choice I made to get here.
P.S. I kept his original code, always gives me a shit eating grin.12 -
Just got picked up for a project. 20,000+ code base, no comments, no docs, variable names like x, xx, xxx, no function name conventions, and a mishmash of Czech, French and English class names.
I thought this job was too good to be true. #fml4 -
ARGH. I wrote a long rant containing a bunch of gems from the codebase at @work, and lost it.
I'll summarize the few I remember.
First, the cliche:
if (x == true) { return true; } else { return false; };
Seriously written (more than once) by the "legendary" devs themselves.
Then, lots of typos in constants (and methods, and comments, and ...) like:
SMD_AGENT_SHCEDULE_XYZ = '5-year-old-typo'
and gems like:
def hot_garbage
magic = [nil, '']
magic = [0, nil] if something_something
success = other_method_that_returns_nothing(magic)
if success == true
return true # signal success
end
end
^ That one is from our glorious self-proclaimed leader / "engineering director" / the junior dev thundercunt on a power trip. Good stuff.
Next up are a few of my personal favorites:
Report.run_every 4.hours # Every 6 hours
Daemon.run_at_hour 6 # Daily at 8am
LANG_ENGLISH = :en
LANG_SPANISH = :sp # because fuck standards, right?
And for design decisions...
The code was supposed to support multiple currencies, but just disregards them and sets a hardcoded 'usd' instead -- and the system stores that string on literally hundreds of millions of records, often multiple times too (e.g. for payment, display fees, etc). and! AND! IT'S ALWAYS A FUCKING VARCHAR(255)! So a single payment record uses 768 bytes to store 'usd' 'usd' 'usd'
I'd mention the design decisions that led to the 35 second minimum pay API response time (often 55 sec), but i don't remember the details well enough.
Also:
The senior devs can get pretty much anything through code review. So can the dev accountants. and ... well, pretty much everyone else. Seriously, i have absolutely no idea how all of this shit managed to get published.
But speaking of code reviews: Some security holes are allowed through because (and i quote) "they already exist elsewhere in the codebase." You can't make this up.
Oh, and another!
In a feature that merges two user objects and all their data, there's a method to generate a unique ID. It concatenates 12 random numbers (one at a time, ofc) then checks the database to see if that id already exists. It tries this 20 times, and uses the first unique one... or falls through and uses its last attempt. This ofc leads to collisions, and those collisions are messy and require a db rollback to fix. gg. This was written by the "legendary" dev himself, replete with his signature single-letter variable names. I brought it up and he laughed it off, saying the collisions have been rare enough it doesn't really matter so he won't fix it.
Yep, it's garbage all the way down.16 -
This just makes me mad every time.
I have a friend who asks for help in coding and just reads and copies my whole code, doesn't even understand what's going on and just copies the whole damn thing (the variable names too). Also, says I don't know how to do it properly because I indent the code and he wants it all in a single line.
If there is any error in the code, just tells me that there is a problem and does nothing and keeps nagging me if I solved the problem every 2 minutes.
Once I solve the problem, just copies the stuff again and then brags to others about the code and takes all the credit.
After bragging, if someone asks him for help he just tried to match the code line by line and worry by word. And tells them their code is wrong if they are using a different method of solving the problem and asks them to do it like him.
Being an introvert, I don't go shoving my stuff in others faces and criticising their code.
But the professor knows I am good, so that works for me. :)17 -
For the love of God use descriptive variable names. I dont care if it is 15 characters long instead of 5. Besides any halfway modern IDE does auto completion.
"tTime" is not helpful. Target time? Test time? Total time? Tea time? Turtle Timmy? No clue...21 -
A friend sent me this in the morning:
“By convention, type names such as String or Int (or Dog or Cat) start with a capital letter; variable names start with a small letter. Do not violate this convention. If you do, your code might still compile and run just fine, but I will personally send agents to your house to remove your kneecaps in the dead of night.”
Excerpt From: Matt Neuburg. “iOS 10 Programming Fundamentals with Swift.” iBooks.1 -
Before I left corporate America, I worked with a guy who was basically the definition of 'idiot savant' sans the actual diagnosis. He was ridiculously smart, but couldn't stay on task to save his life.
Like one time we landed a project with a major client. My team was running backend, his was running mobile integration. After a month of little to no visible activity, we approached him and he just said 'oh yea, i got sidetracked'... but he wasn't working on anything else. Just found some random shinny pebble that caught his attention and he bailed on everything else.
To make matters worse, his personal hygiene was nonexistent (I don't think he's showered since either), and he LOVED writing things in super-obscure languages that even the best we had hadn't ever heard of, with nonsensical (and often totally misleading) variable names and no inline comments. Trying to put someone new on something he'd touched was like asking an English professor to translate a 10K year old tablet dug up in the middle of the desert. Just didn't work.
But... the CEO flat out refused to get rid of him for years, until virtually every other employee simultaneously turned in our two weeks.3 -
I absolutely hate when people name local variables something like temp or tmp. I was working on a project with a guy who did this with almost every local variable and it was really confusing to have like 7 variables with the same name in the same class.
Please use informative names!7 -
The superhuman feeling of going back to your code after a week and it all makes perfect sense, the variable names are intuitive, the doc strings are comprehensive, and the general codebase structure is sensible.2
-
I teach kids (7-12 years) to programming. Yesterday my colleague had the last class for this semester, where parents joined their kids to see what they done. They were presenting their projects, and a guy whose father is really strict with him, saw what variable names his son was using. Some of it (censored) are: "d*ck", "p*ssy", "f*ck". The guy is really scared of his father, because he's agressive with him all the time. I don't want to know what was his punishment for this.5
-
Back in the day, I joined a little agency in Cape Town, small team small office with big projects, projects they weren’t really supposed to take on but hey when the owner of a tech business is not a tech person they do weird things.
A month had passed and it was all good, then came a project from Europe, Poland to be specific. The manager introduced me to the project, it was a big brand - a segment of Lego, built on Umbraco (they should change the name to slowbraco or uhmmm..braco somewhere there) the manager was like so this one is gonna be quite a challenge and I remember you said you are keen on that, I was like hell yeah bring it on (genuinely I got excited) now the challenge was not even about complexity of the problem or code or algorithms etc you get my point… the challenge was that the fucking site was in polish - face palm 1 - so I am like okay code is code, its just content, and I already speak/familiar with 13 human languages so I can’t fail here ill get around it somehow. So I spin up IIS, do the things and boom dev environment is ready for some kick ass McCoding. I start to run through the project to dig into the previous dev’s soul. I could not relate, I could not understand. I could not read, I could not, I could not. - face palm 2 - This dude straight up coded this project in polish variable names in polish, class names in polish, comments in freaking polish. Look, I have no beef with the initial guy, its his language so why not right? sure. But not hey this is my life and now I should learn polish, so screw it, new tab - google translate, new notes, I create a dictionary of variables and class etc 3 days go by and I am fucking polish bro. Come at me. I get to read the previous devs soul through his comments, what a cool dude, his code wasn’t shit either - huge relief. So I rock on and make the required changes and further functionality. The project manager is like really, you did it? I am like yeah dude, there it is. Then I realise I wasn’t the first on this, this dude done tried others and it didn’t go down well, they refused. - face palm 3 -
Anyway, now I am a rock star in the office, and to project managers this win means okay throw him in the deep - they move me to huge project that is already late of course and apparently since I am able to use google translate, I can now defeat time, let the travelling begin. - face palm 4 - I start on the project and they love me on it as they can see major progress however poland was knocking on the door again, they need a whole chunk of work done. I can’t leave the bigger project, so it was decided that the new guy on Monday will start his polish lessons - he has no idea, probably excited to start a new job, meanwhile a shit storm is being prepared for him.
Monday comes, hello x - meet the team, team meets x
Manager - please join our meeting.
I join the meeting, the manager tells me to assist the new dev to get set up.
Me: Sure, did you tell him about he site?
Manager: Yes, I told him you knocked it out the park and now we just need to keep going
Me: in my head (hmm… that’s not what I was asking but cool I guess he will see soon enough -internal face palm 5 - ) New dev is setup, he looks at the project, I am ask him if he is good after like an hour he is like yeah all good. But his face is pink so I figured, no brother man is not okay. But I let him be and give him space.
Lunch time comes, he heads out for lunch. 1hr 15mins later, project manager is like, is the new dude still at lunch.
We are all like yeah probably. 2hrs pass 3hrs pass Now we are like okay maybe something happened to him, hit by a car? Emergency? Something… So I am legit worried now, I ask the manager to maybe give him a ring. Manager tries to call. NOTHING, no response. nada.
Next day, 8am, 9am, 10am no sign of the dude. I go to the manager, ask him what’s up. Manager: he is okay. However he said he is not coming back.7 -
Classmates having trouble with their mess of spaghetti code and improperly named variables (I saw variable names like "poop" already).6
-
I have to refactor code from an intern. He's VERY lucky that he already left the company.
If I'd say he programms like the first human that would be very insulting to that first human.
It looks like code at first sight, but when you try to understand what he was doing to achieve his goal you get a brainfuck. Duplicate code, unused code, dumb variable names like blRszN.
He wrote unittests like "expects Exception to be thrown or Server returns Statuscode 500".
Yes, Exception, the generic one.
THESE FUCKING TESTS ARE GREEN BECAUSE YOU DID NOT ACTUALLY TEST SOMETHING.
GREEN IN THIS CONTEXT MEANS: YOUR PRODUCTION CODE IS A BIG PILE OF SHIT.
I already removed 2 bugs in a test which caused another exception than the "expected" one and the test does still not reach the actual method under test.
Dumb fucktard.
The sad thing: The fuckers who did the code reviews and let this shit pass are still here writing code.4 -
God, I love when people name stuff right. Now I'm reading through an open source project, trying to find out how they solved a critical issue I'm facing now. It's not a small one but navigating through it is a breeze. Look through variable/function names and I don't even really need to read the code. Meanwhile, last assignment, there was "yangDataHandler" and "yangDataManager" that, obviously, had nothing to do with each other in either interoperability or functionality - and then half of the variables would get aliased to abbreviations. Uh, yes, sure it's obvious what
𝚋𝚣𝚋𝚠𝚒 variable means. Just let me run it through 𝚒𝚍𝚣𝚍() function.10 -
I have a junior who really drives me up a wall. He's been a junior for a couple of years now (since he started as an intern here).
He always looks for the quickest, cheapest, easiest solution he can possibly think of to all his tickets. Most of it pretty much just involves copy/pasting code that has similar functionality from elsewhere in the application, tweaking some variable names and calling it a day. And I mean, I'm not knocking copy/paste solutions at all, because that's a perfectly valid way of learning certain things, provided that one actually analyzes the code they are cloning, and actually modifies it in a way that solves the problem, and can potentially extend the ability to reuse the original code. This is rarely the case with this guy.
I've tried to gently encourage this person to take their time with things, and really put some thought into design with his solutions instead of rushing to finish; because ultimately all the time he spends on reworks could have been spent on doing it right the first time. Problem is, this guy is very stubborn, and gets very defensive when any sort of insinuation is made that he needs to improve on something. My advice to actually spend time analyzing how an interface was used, or how an extension method can be further extended before trying to brute-force your way through the problem seems to fall on deaf ears.
I always like to include my juniors on my pull requests; even though I pretty much have all final say in what gets merged, I like to encourage not only all devs be given thoughtful, constructive criticism, regardless of "rank" but also give them the opportunity to see how others write code and learn by asking questions, and analyzing why I approached the problem the way I did. It seems like this dev consistently uses this opportunity to get in as many public digs as he can on my work by going for the low-hanging fruit: "whitespace", "add comments, this code isn't self-documenting", and "an if/else here is more readable and consistent with this file than a ternary statement". Like dude, c'mon. Can you at least analyze the logic and see if it's sound? or perhaps offer a better way of doing something, or ask if the way I did something really makes sense?
Mid-Year reviews are due this week; I'm really struggling to find any way to document any sort of progress he's made. Once in a great while, he does surprise me and prove that he's capable of figuring out how something works and manage to use the mechanisms properly to solve a problem. At the very least he's productive (in terms of always working on assigned work). And because of this, he's likely safe from losing his job because the company considers him cheap labor. He is very underpaid, but also very under-qualified.
He's my most problematic junior; worst part is, he only has a job because of me: I wanted to give the benefit of the doubt when my boss asked me if we should extend an offer, as I thought it was only fair to give the opportunity to grow and prove himself like I was given. But I'm also starting to toe the line of being a good mentor by giving opportunities to learn, and falling behind on work because I could have just done it myself in a fraction of the time.
I hate managing people. I miss the days of code + spotify for 10 hours a day then going home.11 -
That's it, I'm done. My sincere condolences go to the poor soul that will have to maintain this complete and utter crap of code, as I have been doing the past 2 weeks.
3-4 big 4K+ lines files of completely unindented, practically undocumented, interspersed HTML, PHP, JavaScript and CSS! All in the same file.
All the function and variable names are complete nonsense. You might as well have smashed your head against the keyboard and let whatever came out be the names.
You took all the naming conventions that you could find and unleashed your seriously damaged imagination. lowerCamelCase, UpperCamelCase, snakecase, everything in the same fucking function name.
I really needed the money from this project. But I'm done. My mental sanity is more important that try to figure out how to make a decent and usable webpage of THIS COMPLETE DISASTER.
You, the one before me. If you wanted to make sure that no one else besides you could work with this crap, then congrats, YOU FUCKING DID IT WITH HONORS. FUCKING SUMMA CUM LAUDE. PhD and all.4 -
Well... I had in over 15 years of programming a lot of PHP / HTML projects where I asked myself: What psychopath could have written this?
(PHP haters: Just go trolling somewhere else...)
In my current project I've "inherited" a project which was running around ~ 15 years. Code Base looked solid to me... (Article system for ERP, huge company / branches system, lot of other modules for internal use... All in all: Not small.)
The original goal was to port to PHP 7 and to give it a fresh layout. Seemed doable...
The first days passed by - porting to an asset system, cleaning up the base system (login / logout / session & cookies... you know the drill).
And that was where it all went haywire.
I really have no clue how someone could have been so ignorant to not even think twice before setting cookies or doing other "header related" stuff without at least checking the result codes...
Basically the authentication / permission system was fully fucked up. It relied on redirecting the user via header modification to the login page with an error set in a GET variable...
Uh boy. That ain't funny.
Ported to session flash messages, checked if headers were sent, hard exit otherwise - redirect.
But then I got to the first layers of the whole "OOP class" related shit...
It's basically "whack a mole".
Whoever wrote this, was as dumb and as ignorant to build up a daisy chain of commands for fixing corner cases of corner cases of the regular command... If you don't understand what I mean, take the following example:
Permissions are based on group (accumulation of single permissions) and single permissions - to get all permissions from a user, you need to fetch both and build a unique array.
Well... The "names" for permissions are not unique. I'd never expected to be someone to be so stupid. Yes. You could have two permissions name "article_search" - while relying on uniqueness.
All in all all permissions are fetched once for lifetime of script and stored to a cache...
To fix this corner case… There is another function that fetches the results from the cache and returns simply "one" of the rights (getting permission array).
In case you need to get the ID of the other (yes... two identifiers used in the project for permissions - name and ID (auto increment key))...
Let's write another function on top of the function on top of the function.
My brain is seriously in deep fried mode.
Untangling this mess is basically like getting pumped up with pain killers and trying to solve logic riddles - it just doesn't work....
So... From redesigning and porting from PHP 7 I'm basically rewriting the whole base system to MVC, porting and touching every script, untangling this dumb shit of "functions" / "OOP" [or whatever you call this garbage] and then hoping everything works...
A huge thanks to AURA. http://auraphp.com/
It's incredibily useful in this case, as it has no dependencies and makes it very easy to get a solid ground without writing a whole framework by myself.
Amen.2 -
Ever heard of event-based programming? Nope? Well, here we are.
This is a software design pattern that revolves around controlling and defining state and behaviour. It has a temporal component (the code can rewind to a previous point in time), and is perfectly suited for writing state machines.
I think I could use some peer-review on this idea.
Here's the original spec for a full language: https://gist.github.com/voodooattac...
(which I found to be completely unnecessary, since I just implemented this pattern in plain TypeScript with no extra dependencies. See attached image for how TS code looks like).
The fact that it transcends language barriers if implemented as a library instead of a full language means less complexity in the face of adaptation.
Moving on, I was reviewing the idea again today when I discovered an amazing fact: because this is based on gene expression, and since DNA is recombinant, any state machine code built using this pattern is also recombinant[1]. Meaning you can mix and match condition bodies (as you would mix complete genes) in any program and it would exhibit the functionality you picked or added.
You can literally add behaviour from a program (for example, an NPC) to another by copying and pasting new code from a file to another. Assuming there aren't any conflicts in variable names between the two, and that the variables (for example `state.health` and `state.mood`) mean the same thing to both programs.
If you combine two unrelated programs (a server and a desktop application, for example) then assuming there are no variables clashing, your new program will work as a desktop application and as a server at the same time.
I plan to publish the TypeScript reference implementation/library to npm and GitHub once it has all basic functionality, along with an article describing this and how it all works.
I wish I had a good academic background now, because I think this is worthy of a spec/research paper. Unfortunately, I don't have any connections in academia. (If you're interested in writing a paper about this, please let me know)
Edit: here's the current preliminary code: https://gist.github.com/voodooattac...
***
[1] https://en.wikipedia.org/wiki/...29 -
I've run into problems with the app I'm working on, the problems are related to issues regarding code.
No in fact it's related the last guy who wrote the app, the code has no comments and the variable names make no sense, the only comments in the code are blocks of code... With no reason as to why it was commented.
I have to add in some checks to determine if a person that has logged in is a full member or not (full member has access to the feature I've added) and the way the guy has made this app works makes no sense to me at all.
I've tried my best to avoid all contact with his code because it makes me want to yell out in frustration.
But for this one case I have to work with what's there.
I know I've mentioned this before but I've hit my limit yet again.
And for those who don't know this guy managed to scrape together skeleton code from two apps to make part of this app, rather than using parts of the other apps he left out code that was specifically made for the other apps, (majority of the commented out code).
One app was a taxi app and from the looks of it the feature he used was to get GPS location (which I don't understand before Google maps is a think after all... The taxi app USES Google maps), the other app is some sort of funeral webcasting app (I found code imports for it, without any actual code).
I don't actual understand how this guy could put this together without not thinking "maybe this is a bad idea"
Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live
I'm that psychopath right now..... Fuck that guy (don't know where he lives though)1 -
http://mindprod.com/jgloss/...
Skill in writing unmaintainable code
Chapter : The art of naming variables and methods
- Buy a copy of a baby naming book and you’ll never be at a loss for variable names. Fred is a wonderful name and easy to type. If you’re looking for easy-to-type variable names, try adsf or aoeu
- By misspelling in some function and variable names and spelling it correctly in others (such as SetPintleOpening SetPintalClosing) we effectively negate the use of grep or IDE search techniques.
- Use acronyms to keep the code terse. Real men never define acronyms; they understand them genetically.
- Randomly capitalize the first letter of a syllable in the middle of a word. For example: ComputeRasterHistoGram().
- Use accented characters on variable names.
- Randomly intersperse two languages (human or computer). If your boss insists you use his language, tell him you can organise your thoughts better in your own language, or, if that does not work, allege linguistic discrimination and threaten to sue your employers for a vast sum.
and many others :D -
Felt so awkward today. Bare in mind I am still a junior. I was on a pull request reviewing session on a repo I use. I was being super super pedantic with variable names, data types etc as the people who wrote it are brand new to the company. I then realise I had just reviewed the companies lead developers PR to a different repo. Every time someone comments on a PR on this repo all developers in the company get an email notification. I sat there litrually sweating, bright red with the words 'oh ****' on an infinite loop in my head, staring at the screen waiting to see what was to happen.
Thankfully he was ok with the comments. But now people keep calling me the lead developer (teasing) fml I hate anxiaty2 -
Why is starting a C++ project so overly complicated and annoying?!
So many different compilers. So many ways to organize the files. So many inconsistencies between Linux and Windows. So many outdated/lacking tutorials. So many small problems.
Why is there almost no good C++ IDEs? Why is Visual Studio so bizarre? Why are the CMake official tutorials literally wrong? Why can't we have a standard way to share binaries? Why can't we have a standard way to structure project folders? Why is the linker so annoying to use?
Don't get me wrong, I quite like the language and I love how fast it is (one of the main reasons I decided to use it for my project, which is a game almost comparable to Factorio)... But why is simply starting to write code such a hassle?
I've been programming in Java for years and oh god I miss it so much. JARs are amazing. Packages are amazing. The JDK is amazing. Everything is standardized, even variable names.
I'm so tempted to make this game in Java...
But I can't. I would have a garbage collector in the way of its performance...11 -
Just read an article that really grinds my gears. Its about coding in other languages. Not programming languages, but literally other languages.
Btw I learned to code in Spanish and I'm not against coding in programming languages using variable names in other languages.
That's fine.
What pissed me off was that the author claimed that we should be able to code Fucking JavaScript in SWAHILI or other languages available. What kind of PC bullshit is that!
Coding is barely fucking readable and now we have to make standards for Multilanguage support. Just learn the less than 60 reserved words you lazy fuck and code with them! I leaned to code with shitty tutorials in Spanish and theres no 1000x resources out there and this author claims you can't code unless you know english.
Granted. It's easier but wtf not just learn it. When I coded in Java in Spanish, I didn't know wtf a Class was or ags meant. So what. I memorized that shit. How? By coding!
Why bring this PC shit to programming? The author thinks there are few programmers bc we don't support fucking SWAHILI in JavaScript. Fuck no!
Now if you want to support this initiative. Think of this,
...legacy code
...in 32+ languages.
Have fun debugging this thing.14 -
Today I discovered what slowed my productivity the most: variable naming.
In a project I was naming many variables 'dirname' in different parts of the my code, but it represented 3 things: only the name of the directory, relative path + directory, and absolute path + directory.
I wasted to much time just figuring out which was which everytime until I finally decided to organize variables names better and see the wonders of the world. Result:
- dirname: only the name
- reldirname: relative path + dir
- absdirname: absolute path + dir
Such simple solution, yet took me years to actually see the benefits, my god
(First devRant post btw :3)7 -
personalproject C++ codebase:
- Clean code,
- 1 class per file,
- naming conventions
- comments .
- No more than 10 files per folder
Work C++ codebase:
- 22 classes per file.
- Classname not the same as file name
- weird variable names CmdStng
- All files in one source folder.
- Source control from 20 years ago
Me every time I cannot find anything I wondering why it is in a different file on line 3574 inside another class with an unrelated filename6 -
Another project with legacy code got just dusted off at work. Shits fucked beyond recognition! We got:
- Rando variable names that mean nothing
- Timers running with a cycle time of 2.5ms if you start them with the multiplier 1.
- An Interrupt routine thats 300 lines long.
- Another interrupt thats starting an ADC conversion and waiting for it to complete before returning.
- For loops that start with one and subtract one from the iterator in the loop
- Every value that would normally be expressed as a regular number is written down in Hex. Eg: if(val==0x05)
- State machine built without writing down which state is which. Its just a number. (In hex obviously!)
- All running on a Microcontroller you cant debug on.
- Using a compiler no one has ever heard of before.
- Weird ass Port manipulations
- 15 different .hex and .elf files with no clue whats in them.
- No version control
- We tried explaining the code to a monkey and it hanged itself.10 -
Why yes, it makes total sense for a variable called `$connectionString` to only accept either booleans or integers ... wat
Also beware the beauty on how well that names conveys the variable's intent.
FML3 -
I just started a job as a junior C# dev.
My project at work includes:
-no coding style
-multiple classes in one file
-all classes are static
-who needs interfaces?
-typos in variable names
-more than 3 levels of inheritance
-conf files such as "blabla.xml"
-comments? documentation? nope
-copy&paste everywhere
Client outsourced this project to us to get the job done properly :D
Looks that I have some opportunity to show my talent.10 -
Rant PART 2 [FINAL-inspirational]
In my previous rant I posted what was happening in my life. And now I want to share how it all unfolded.
To remember some things, I was doing a mobile project for school and it was a group assignment. My group was so disperse that I ended up doing all by myself. And in the middle of this my gf and I were fighting.
I spent the last two days coding all day during work (I do coding internship for the college I go to, so my boss was cool about me doing the project during work) and I ended up forgetting what day it was today (today is a holyday, I thought I had to go to work because I forgot). It was such an intense two days that while coding I was forgetting variable names, table row names (I literally spent half an hour on my API trying to find a solution, when the solution was that I was using `seller_fk` on the API, but in the database was `seller_id`) and my mind was imploding. I asked my boss for help on the database (he's really good at it) and my teachers to help me. But everything paid off.
Yesterday I started coding at 8am and ended up finishing the project at 9:28 pm (the day before yesterday was the same thing), 2 minutes before the class of the project to start! I was able to finish the project, finally! But what really remarked me was that from all the groups that were in like 4-5 people, I was the only one who delivered the project that day. All other groups are going to have to deliver the project next week with reduced project grade, while I got 100% of the grade because I delivered on the date.
God is good!
Also my gf and I are good now. We are kinda still recovering emotionally, but are now more respectfull to each other, so I guess something good can comeout of bad things.
Happy coding everyone and never give up!
If I made it out of this whole mess so can you! :)1 -
This is documentation at a noob-program level. We had this one teacher, who shall remain unnamed, who used single letter variable names everywhere, who couldn't understand his own programs when they were shown to him.
PS - The picture attached is supposed to be an implementation of Kruskal's algorithm. Don't ask me what the variables mean.14 -
OMFG I don't even know where to start..
Probably should start with last week (as this is the first time I had to deal with this problem directly)..
Also please note that all packages, procedure/function names, tables etc have fictional names, so every similarity between this story and reality is just a coincidence!!
Here it goes..
Lat week we implemented a new feature for the customer on production, everything was working fine.. After a day or two, the customer notices the audit logs are not complete aka missing user_id or have the wrong user_id inserted.
Hm.. ok.. I check logs (disk + database).. WTF, parameters are being sent in as they should, meaning they are there, so no idea what is with the missing ids.
OK, logs look fine, but I notice user_id have some weird values (I already memorized most frequent users and their ids). So I go check what is happening in the code, as the procedures/functions are called ok.
Wow, boy was I surprised.. many many times..
In the code, we actually check for user in this apps db or in case of using SSO (which we were) in the main db schema..
The user gets returned & logged ok, but that is it. Used only for authentication. When sending stuff to the db to log, old user Id is used, meaning that ofc userid was missing or wrong.
Anyhow, I fix that crap, take care of some other audit logs, so that proper user id was sent in. Test locally, cool. Works. Update customer's test servers. Works. Cool..
I still notice something off.. even though I fixed the audit_dbtable_2, audit_dbtable_1 still doesn't show proper user ids.. This was last week. I left it as is, as I had more urgent tasks waiting for me..
Anyhow, now it came the time for this fuckup to be fixed. Ok, I think to myself I can do this with a bit more hacking, but it leaves the original database and all other apps as is, so they won't break.
I crate another pck for api alone copy the calls, add user_id as param and from that on, I call other standard functions like usual, just leave out the user_id I am now explicitly sending with every call.
Ok this might work.
I prepare package, add user_id param to the calls.. great, time to test this code and my knowledge..
I made changes for api to incude the current user id (+ log it in the disk logs + audit_dbtable_1), test it, and check db..
Disk logs fine, debugging fine (user_id has proper value) but audit_dbtable_1 still userid = 0.
WTF?! I go check the code, where I forgot to include user id.. noup, it's all there. OK, I go check the logging, maybe I fucked up some parameters on db level. Nope, user is there in the friggin description ON THE SAME FUCKING TABLE!!
Just not in the column user_id...
WTF..Ok, cig break to let me think..
I come back and check the original auditing procedure on the db.. It is usually used/called with null as the user id. OK, I have replaced those with actual user ids I sent in the procedures/functions. Recheck every call!! TWICE!! Great.. no fuckups. Let's test it again!
OFC nothing changes, value in the db is still 0. WTF?! HOW!?
So I open the auditing pck, to look the insides of that bloody procedure.. WHAT THE ACTUAL FUCK?!
Instead of logging the p_user_sth_sth that is sent to that procedure, it just inserts the variable declared in the main package..
WHAT THE ACTUAL FUCK?! Did the 'new guy' made changes to this because he couldn't figure out what is wrong?! Nope, not him. I asked the CEO if he knows anything.. Noup.. I checked all customers dbs (different customers).. ALL HAD THIS HARDOCED IN!!! FORM THE FREAKING YEAR 2016!!! O.o
Unfuckin believable.. How did this ever work?!
Looks like at the begining, someone tried to implement this, but gave up mid implementation.. Decided it is enough to log current user id into BLABLA variable on some pck..
Which might have been ok 10+ years ago, but not today, not when you use connection pooling.. FFS!!
So yeah, I found easter eggs from years ago.. Almost went crazy when trying to figure out where I fucked this up. It was such a plan, simple, straight-forward solution to auditing..
If only the original procedure was working as it should.. bloddy hell!!8 -
Ah.. the beauty of clean code.
I wrote a very cleanly written program two years ago. Proper variable names, not too many, right naming, right design pattern,.. Now I come back to it and I am able to instantly figure out the code again. It only took me half a minute.
The importance of clean code... that's something the industry needs to understand more. Well, then there's the money issue. lol5 -
Why the Fuck I keep forgetting human names and keep replacing it with variable .........???
Apparently Jessica is var1
(╯°□°)╯︵ ┻━┻
┴┬┴┤( ͡° ͜ʖ├┬┴┬
( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)
:< ̄`ヽ、 / ̄>
ゝ、 \ /⌒ヽ,ノ /´
ゝ、 `( ( ͡° ͜ʖ ͡°) /
> ,ノ
∠_,,,/´”2 -
In my wallowing experience as a freelancer I've noticed that almost all C/C++ clients are perfectionist. You just can't please them by getting the job done quickly.
I got a libcurl job from one the other day to scrape data from a target website and within an hour it was ready. I notified the client and he was both amazed and confused assuming it would take the whole week.
C++Client: The code works but you need to take your time.
Me: Sorry?
C++Client: Yes, it works but you used "string" instead of "wstring"
Me: 😊 Oh okay... *converts strings to wstring*
C++Client: And also variable names should be more descriptive.
Me: 😏 *int foobar => int very_long_descriptive_foobar_01*
C++Client: And also use "shorts" for page nums it'll save some bytes
Me: 😕 *int => short...*
C++Client: And also use forloops instead of whileloops
Me: ☹️ *whileloops => forloops*
C++Client: And also use -- instead of ++ in loops
Me: 😤 *for(... i++) => for(... i--)*
C++Client: And also...
C++Client: And also...
C++Client: And also...
C++Client: And also...
C++Client: And also...
C++Client: And also...
C++Client: And also...
===> Seven "and also" days later <===
Me: *completed 10 Java projects behind the scene*
C++Client: And also use pthread instead of thread
Me: 😧 It's day 7 already!
C++Client: Oh I see, great job. You can compile and send me the archived source.
Me: 🤩
C++Client: And also...
Me: 🏃💨11 -
When your dev's copy and paste code and don't bother changing the (completely irrelevant and misleading) variable names.1
-
I don't know if I'm being pranked or not, but I work with my boss and he has the strangest way of doing things.
- Only use PHP
- Keep error_reporting off (for development), Site cannot function if they are on.
- 20,000 lines of functions in a single file, 50% of which was unused, mostly repeated code that could have been reduced massively.
- Zero Code Comments
- Inconsistent variable names, function names, file names -- I was literally project searching for months to find things.
- There is nothing close to a normalized SQL Database, column ID names can't even stay consistent.
- Every query is done with a mysqli wrapper to use legacy mysql functions.
- Most used function is to escape stirngs
- Type-hinting is too strict for the code.
- Most files packed with Inline CSS, JavaScript and PHP - we don't want to use an external file otherwise we'd have to open two of them.
- Do not use a package manger composer because he doesn't have it installed.. Though I told him it's easy on any platform and I'll explain it.
- He downloads a few composer packages he likes and drag/drop them into random folder.
- Uses $_GET to set values and pass them around like a message contianer.
- One file is 6000 lines which is a giant if statement with somewhere close to 7 levels deep of recursion.
- Never removes his old code that bloats things.
- Has functions from a decade ago he would like to save to use some day. Just regular, plain old, PHP functions.
- Always wants to build things from scratch, and re-using a lot of his code that is honestly a weird way of doing almost everything.
- Using CodeIntel, Mess Detectors, Error Detectors is not good or useful.
- Would not deploy to production through any tool I setup, though I was told to. Instead he wrote bash scripts that still make me nervous.
- Often tells me to make something modern/great (reinventing a wheel) and then ends up saying, "I think I'd do it this way... Referes to his code 5 years ago".
- Using isset() breaks things.
- Tens of thousands of undefined variables exist because arrays are creates like $this[][][] = 5;
- Understanding the naming of functions required me to write several documents.
- I had to use #region tags to find places in the code quicker since a router was about 2000 lines of if else statements.
- I used Todo Bookmark extensions in VSCode to mark and flag everything that's a bug.
- Gets upset if I add anything to .gitignore; I tried to tell him it ignores files we don't want, he is though it deleted them for a while.
- He would rather explain every line of code in a mammoth project that follows no human known patterns, includes files that overwrite global scope variables and wants has me do the documentation.
- Open to ideas but when I bring them up such as - This is what most standards suggest, here's a literal example of exactly what you want but easier - He will passively decide against it and end up working on tedious things not very necessary for project release dates.
- On another project I try to write code but he wants to go over every single nook and cranny and stay on the phone the entire day as I watch his screen and Im trying to code.
I would like us all to do well but I do not consider him a programmer but a script-whippersnapper. I find myself trying to to debate the most basic of things (you shouldnt 777 every file), and I need all kinds of evidence before he will do something about it. We need "security" and all kinds of buzz words but I'm scared to death of this code. After several months its a nice place to work but I am convinced I'm being pranked or my boss has very little idea what he's doing. I've worked in a lot of disasters but nothing like this.
We are building an API, I could use something open source to help with anything from validations, routing, ACL but he ends up reinventing the wheel. I have never worked so slow, hindered and baffled at how I am supposed to build anything - nothing is stable, tested, and rarely logical. I suggested many things but he would rather have small talk and reason his way into using things he made.
I could fhave this project 50% done i a Node API i two weeks, pretty fast in a PHP or Python one, but we for reasons I have no idea would rather go slow and literally "build a framework". Two knuckleheads are going to build a PHP REST framework and compete with tested, tried and true open source tools by tens of millions?
I just wanted to rant because this drives me crazy. I have so much stress my neck and shoulder seems like a nerve is pinched. I don't understand what any of this means. I've never met someone who was wrong about so many things but believed they were right. I just don't know what to say so often on call I just say, 'uhh..'. It's like nothing anyone or any authority says matters, I don't know why he asks anything he's going to do things one way, a hard way, only that he can decipher. He's an owner, he's not worried about job security.13 -
People who write ridiculous JS variable names that are impossible to understand or are just unreadable!! WTF!! Don't tell me it's to save bytes because its getting minified anyway. You're just fucking lazy.
-
Spent yesterday afternoon trying to extract the logic from a VBA macro written by civil engineers so that we can encode the same logic in the applications we're writing.
Sweet Jesus.
500 lines of meaningless variable names and loops reading values from various spreadsheets into a 3 dimensional array(!).
On top of that, now that I kind of understand what it's doing, I don't think it's ever worked properly.2 -
Today on "How the Fuck is Python a Real Language?": Lambda functions and other dumb Python syntax.
Lambda functions are generally passed as callbacks, e.g. "myFunc(a, b, lambda c, d: c + d)". Note that the comma between c and d is somehow on a completely different level than the comma between a and b, even though they're both within the same brackets, because instead of using something like, say, universally agreed-upon grouping symbols to visually group the lambda function arguments together, Python groups them using a reserved keyword on one end, and two little dots on the other end. Like yeah, that's easy to notice among 10 other variable and argument names. But Python couldn't really do any better, because "myFunc(a, b, (c, d): c + d)" would be even less readable and prone to typos given how fucked up Python's use of brackets already is.
And while I'm on the topic of dumb Python syntax, let's look at the switch, um, match statements. For a long time, people behind Python argued that a bunch of elif statements with the same fucking conditions (e.g. x == 1, x == 2, x == 3, ...) are more readable than a standard switch statement, but then in Python 3.10 (released only 1 year ago), they finally came to their senses and added match and case keywords to implement pattern matching. Except they managed to fuck up yet again; instead of a normal "default:" statement, the default statement is denoted by "case _:". Because somehow, everywhere else in the code _ behaves as a normal variable name, but in match statement it instead means "ignore the value in this place". For example, "match myVar:" and "case [first, *rest]:" will behave exactly like "[first, *rest] = myVar" as long as myVar is a list with one or more elements, but "case [_, *rest]:" won't assign the first element from the list to anything, even though "[_, *rest] = myVar" will assign it to _. Because fuck consistency, that's why.
And why the fuck is there no fallthrough? Wouldn't it make perfect sense to write
case ('rgb', r, g, b):
case ('argb', _, r, g, b):
case ('rgba', r, g, b, _):
case ('bgr', b, g, r):
case ('abgr', _, b, g, r):
case ('bgra', b, g, r, _):
and then, you know, handle r, g, and b values in the same fucking block of code? Pretty sure that would be more readable than having to write "handeRGB(r, g, b)" 6 fucking times depending on the input format. Oh, and never mind that Python already has a "break" keyword.
Speaking of the "break" keyword, if you try to use it outside of a loop, you get an error "'break' outside loop". However, there's also the "continue" keyword, and if you try to use it outside of a loop, you get an error "'continue' not properly in loop". Why the fuck are there two completely different error messages for that? Does it mean there exists some weird improper syntax to use "continue" inside of a loop? Or is it just another inconsistent Python bullshit where until Python 3.8 you couldn't use "continue" inside the "finally:" block (but you could always use "break", even though it does essentially the same thing, just branching to a different point).19 -
Figuring out where to put my devRant stickers is like picking variable names.
Except you can't refactor stickers... -
Ffs, I've finally finished a project where I worked with a guy who was the laziest coder I have ever worked with.
He didn't even try to come up with meaningful variable names😒.
Instead of naming a variable label1 (which is already kinda s***) he tried lbl1 but still made a typo so the actual name was ibl1.
AND HE LEFT IT LIKE THAT FOR THE REST OF THE PROGRAM!4 -
Got rebuked by the Java teacher today at the University for using proper long names for variables in the code. She though I was just wasting time being lazy in the lab. "If something can be achieved by a single character, why type that long variable again and again?". *Everyone in class laughs*
Then, there was an error in my code [turned out to be long long int in Java is weird], and I had no clue what was going wrong [I'm a week old in Java]. So, I had initially called her to help. She made me change all private methods and attributes to public. When asked "why?", got trolled again.
Now, I know it's okay, and not that I really care about what my classmates think of me, but getting this kind of treatment really sucks. And if this is how future software developers are crafted today, maintainability is surely going to be an issue tomorrow.
Maybe staying in this stupid country was my worst career choice. I should have tried harder and gone abroad.11 -
When it comes to the indentation or look I am fully consistent.
But when it comes to naming I am inconsistent like a crack whore telling she's clean.
Camelcase, underscores inconsistent variable and function names. I use all of them within a single file. On some days I even switch languages.
I truly am miserable in code consistency. Is there any good advice to keep the code consistent?10 -
This is PART 1/2 of a series of rants over the course of a software engineering class years ago.
We were four team members, two had never failed a class, I’ll refer to them as MT and FT, male and female top students, respectively, and an older student with some real world experience who I’ll refer to as SR.
Rant 1: As I was familiar with the agile methodologies I became the Scrum Master and was set with the task of explaining it to the team members, SR showed up late and nobody seemed interested in learning new methodology. At this point I knew we'd have trouble as a team.
Rant 2: FT made up her project proposal without informing anybody, which required a real client/product owner. We only figured it out after her proposal was accepted as the project, so we ended up working with fake requirements.
Rant 3: This one is partly my fault. I researched first and then worked, which meant I was the last to turn up my work. In one activity MT pressures me and I agree to a deadline so everyone can send their work to the teacher in a timely manner. Since I was the last to finish, I was also asked to give the doc some formatting, which I did in a hurry so it wasn't the best.
The next day MT and FT start complaining about me, saying I took too long and that they expect me to do better next time or else. At the same time they were stressed and in a hurry because we had to explain the project outline in front of the class and they didn't study.
Turns out copying and pasting all your work in less than an hour means you don’t learn anything. FT actually asked me for help days before and I sent her a website in English, which she wasn't very good at, so she just ran it through Google Translate and called it a day.
Later FT called me rude for interrupting MT in the presentation, which I did because he started making up stuff about the project.
Rant 4: SR expressed his dislike for school through profanity in variable names and commit messages. This caused MT and FT to dislike him. I thought it was immature but if anything it should’ve been reported to the teacher and move on.
Rant 5: I was stuck trying to get the REST API working for the project Admittedly this was my fault, too, because I was pushing for the usage of things nobody was familiar with for the sake of learning. This coupled with SR’s profanity led to drama and the progress was dropped, starting over from scratch.
At this point I stepped down from the Scrum Master role as nobody seemed to listen anymore.4 -
My head is melting. Does anyone have a colleague who constantly complains about missing specs, documentation, project organization, bad processes and procedures? Everything needs to be planned. Not a single small code change can be done without reviewed details. 10min job becomes a week-long session of whining and dabbling.
You give the guy a small task and at the end of the day nothing is done. Just page after page of written documents and lists in Word and online notebooks. Version numbers, meaningless measurement results, latencies etc. And all you asked was "could you just fucking fix this one thing and quickly compile and check it". But no. There must be a review and at least 10 people need to be called into conference. Someone needs to approve everything just so that he can later move to blame to others. "Yeah I know it's not working but I showed you the code and you reviewed it!". Yes, you did, but other people have work of their own so sometimes you need to tie your own shoelaces.
And sometimes finally there's some work done. All indentations are shit. There’re code changes everywhere just because the guy didn't like the previous smaller, compact and logical code. The code doesn't even compile properly anymore. And if you complain, the reason is "there's no proper reviewed and stamped process description, so I cannot know if a variable is supposed to be 10 characters long. Besides 200 character long variable names are much more descriptive". For fucks sake.
Some coders should've gone to work in some tax office basement.9 -
New PM thinks it's a great idea to start micromanaging my team's (private) repo names. Can't wait to hear his opinions on our class and variable names! 😭3
-
When u send ur code for review and instead of getting comments for logic u put in, u get 10+ comments regarding variable names , extra lines and formatting.
LMF7 -
Superpower to instantly create variable names every time I need to declare a new variable based on the perfect matching with the code being written..
-
Developers who think using cryptic variable names (like acronyms) is better than long descriptive variable names.....but then feel the need to document/comment the variable name rather than just naming the variable properly in be first place.
// Current CGRect to draw into
let ccgrd = self.currentCGRect()
Instead of just
let currentRectForDrawing = self.currentCGRect()4 -
If you know you're writing code that other people will have to work off of and you refuse to comment, can you at least have descriptive variable names so I don't have to spend an hour trying to figure out wtf something is. One letter does not make a variable name.8
-
Is it so hard to comment your code?
I work on collab projects here and there and both the comments and documentation are both awful, nearly always, there are some exceptions.
This is a plea to all those who teach anyone to program. "This performs a loop" is not a helpful comment, nor is "This sets variable x to 1" where the line below is "let x = 1".
The last piece of code brings me on to my next point meaningful variable names. If x is a variable that stores the age of a machine call it ageOfMachine or age_of_machine. Not aom, not x but what it actually is, modern IDEs and text editors will fill this out for you.
Finally documentation, a good friend of mine sent me this quote a while back, I can't find the image but "Documentation is like sex, when it's good, it's great. But when it's bad it's better than nothing." Your documentation should be good, a good pattern to follow is the Node.js documentation, it tells the function, what it does and what parameters it takes.
Anyway rant over; and I'm sure that this applies to people outside of this community only.5 -
I really hate api response variable names like this. I mean why type "targetitemid" when "target_item_id" is so much more readable?8
-
Do you guys drop the S from your variable names? I am constantly in a dilemma as to what makes more sense.
For example a SQL Table:
Books
----------
BookID
BookName
....
---------
OR
Book
---------
BookID
BookName
.....
---------
Or even in a language like C# or JavaScript:
const BOOKS
var books
let books
or
const BOOK
var book
let book
Even if you have multiple items in that variable/table it seems very redundant to ever have the s.
What do you guys think? Any input appreciated!
Happy coding!24 -
Well, not necessary my favourite but the first one I learned.
I think the weird syntax and semantics combined with the ridiculous average length of variable names is a major flaw in this one.4 -
Just another day of trying to figure out The purpose of a public method with zero documentation and cryptic variable names🙇🏼🙇🏼🙇🏼6
-
in personal projects, it is really easy to tell when I'm horny. you will find variable names like
- hotVar
- sluttyVar
- FUCK_ME_VAR
15 minutes after that commit naming becomes
- var1 -
Development time : 1 month
Architecture: 5 days
Writing code: 5 days
Testing: 5 days
Deciding variable/service/entity names: 15 days4 -
I'm working with dictionaries today so naturally all my variable names are making me chuckle:
threshDic
saveDic
cutDic
Etc. you get the picture, it's the little things that get you through a Friday slog. -
Please and please, if you cannot take the time out to create new classes do not copy and paste another without editing it properly! I noticed you do a find and replace and then leave 50% of variable names un-edited because all errors are gone. I am begging you in the name of Zeus edit your shit!
Here is one dick head:1 -
Dude what the fuck with C#'s code style?
Pascal case variable names and classes? Don't we do this so we can differentiate between variables and classes??
Newline between parentheses and brackets?
Retarded auto get/ set methods that serve no purpose than to make code difficult to read and debug?
And after all that shit, string, which is a class, has a lowercase s and is treated as if a primitive?
I really have no idea why this language is so widely praised. The only thing I like about it is that it's the only major bytecode language that has operator overloading and reference parameters.19 -
When it is 645am Friday and you spent the whole week with meetings and tasks and sleepless nights.
You just cannot give a tiny rat ass about the naming of routes and functions.
DO NOT ask me about my variable names!3 -
Such variable names
much helpful
very wow!
Either I need to download sdk source code for var names to show up correctly or I need to memorize which is for what :\9 -
I have been very inactive in these last couple of months but I really need to rant right now:
I am working on a project, which is also part of a contest, with a few of my friends. I asked one of them to write a bit of code and some documentation about it, here's the result:
He wrote half a page of text with plenty of spelling mistakes and grammatical errors but here comes the even worse part:
Instead of just leaving the code in its own file he copied it into the word (libre office writer) file as well. Now I have got 3 pages of non-indented code with a few comments flying around here and there, weird variable names and a lot of commented out pieces of code.
Bloody hell I feel like I am the only one in this team taking this contest serious.3 -
Fellow devranter detected?
I can hardly count how many times I've used profanities for variable names or placeholder text. But, unlike this landing page for the Norwegian company 1881's API they never see the light of day. At least I hope so...
Made my giggle out loud at least, 1881 is a well known and respectable (I guess) company over here. Hello world! :-D5 -
Our instructor for game development claims that variable names are not important if your scope is small.
Thoughts?
Here is a picture of his code he gave us as a reference the other day.19 -
So now I’m working with this code that is roughly documented because ”variable names are self-explanatory”.
Yeah, you just forgot that FORTRAN does not support utf-8 variable names...
Why utf-8? Because then if I see:
real :: 座標(3)
I would understand that you mean ”zahyō”, the usual 3D position array ”r(3)”, but no, I need to deal with:
real :: zah(3)
yeah...🙃🔫16 -
honestly some online courses are bullshit. i joined one for some sample code, and no comments, no explanations, the variable names WEREN'T even descriptive.
this is from a website with a published book… how about you take some fucking responsibility for your code?
the language was c++ and they are still using printf! shake my fucking head. you have global variables that are one fucking letter! please, stop, get help.
…AND IT WASN'T EVEN ON GITHUB -
I worked at a startup that indulged in pair programming thing. Where as a junior, you'd be partnered with a senior developer.
My mentor, always insisted on having shortest variable names possible, so that the "size of codebase" will be very small.
It was a nightmare going through his code and understanding what's he's done. Best part, no comments as well.
In a way it has primed me to go through any codebase possible.5 -
I really don't mind it as long as the work is on track but damn it hurts to read the git commit messages with messed up spellings. In some cases it's not just that, but variable names, file names, etc. as well.
English isn't the first language in my country and a lot of people are not as proficient with it so it's probably not appropriate to judge, but the cringe is real.
Sometimes I wonder if I am that cringeworthy person to someone else.3 -
Two brainfarts that resulted in... a lot of pain
I had been coding all day, ~6hrs. I was in the zone, so I hadn't saved to git. It was all uncommitted changes (you see where this is going...)
Brainfart#1: The code used the "Contact" class, but for some reason my hands typed "Product" in this ONE line.
Brainfart#2: I became aware of Brainfart#1, so I changed the variable from "Product" to "Contact". However, I instinctively pressed F2, "Rename Symbol", instead of just changing the variable I was using. Now ALL of the references to "Product" were to the "Contact" class instead, across all of our code.
I finished coding. I committed and pushed the changes, closed the IDE, and left the desk for a snack. When I came back, the automated tests were failing due to an import error. That's when I noticed my mistake. I couldn't do Ctrl+Z because I had closed the editor. I had to change the names one by one across all of our code. "Contact" and "Product" are probably our two most used classes 😭6 -
I hate dumb variable names as much as I hate people who don't signal when they drive.
Never mind the fact that there's a validation-state variable inside his controller, separate rant.1 -
Keep this in mind: I don't like WordPress and PHP at all!!!
So a couple of days ago my boss asked me if I could extend a custom made WordPress plugin made by our intern. First thought: sure why not? Boss says: it has to be done in less than 100 hours of work (an estimate done by my boss and the intern). Me: I can't tell you that before I have seen the code and what functionality has to be in the extension. Boss: Cool, look it over this weekend and tell me if you want to do it or not.
I looked it through and my answer will probably be: NO WHERE IN HELL am I gonna are this in less that 100 hours! 1. no tests has been performed so I have absolutely no clue if his code works.
2. variable names are mostly: $string_query (whatever that means?), $result, $string_temp and so on.
3. Methods and functions are more than 250 lines long, with shitty formatting, and more comments than code. WTF?
4. The estimate has been made by an intern and my boss (doesn't know much about programming). I haven't been consulted about it....
5. No version control. No branches, no commits other than initial commit. Great.
6. Most comments in the code just tells me what I can read from the code. What it returns and what it takes as params. Can I please know wtf your method call named $booking->run () does? I still haven't found this method in the code after 1 hour of intensively looking for it...
FFS man... Not gonna do this, even though I thought it would have been an interesting project initially.
Sorry for the long rant... I just wish the intern would have consulted me about all this shit, since he obviously have bad practices. *sigh*6 -
Swift let's you use most Unicode characters as variable names. But that doesn't mean you should do it.
I just found this in the code base:
let π = M_PI
FML -
Going through a startup code
...
// TODO: implement!
...
// FIXME: this is so messed up
...
...
// HACK: works for now, find a better way
...
// HACK: hardcoded for now
...
// FIXME: this doesn't work, crash here
...
...
// TODO: this probably should be a separate class
...
// TODO: change messed up variable names
...
// FIXME: WTF is this, Dave?!
...
...
// TODO: remove this before release2 -
Not sure if it's the worst code review but it's a recent one.
We don't really do code reviews where I work unfortunately but my coworker used my framework for the first time (build some nice composer libraries for cmdline projects) and asked if I could make them do autoloading.
He never used namespaces before so I was glad to help him out.
What I saw was a dreadful mess. His project was called "scripts" so good luck picking a namespace...
Than it was all lose functions in the executable file. All those functions are however called by a class in another file (if they where not calling eachother as a cascading mess). That class was extending an abstract class from my library as instructed. However I never imagined my lib being raped like that.
The functions themselves are a horrible mess. Nothing uniform completely different style (our documentation states PSR's should be used).
Parameters counts higher than 5.
Variable names like Object and Dobject (in calling function Dobject is Object but it needs a fresh one.
If statements on parameters that need basically split it in two (should simply be to functions)
If else statement with return of same variable as a single line (sane people use ternary for that)
Note that I said functions. All of it should have been OO and methods. Would have saved at least some of the parameter hell.
I could go on and on. Do I think the programmer is bad yes (does not even grasp interfaces, dep injection, foreach loops). Is this his best work no. He said that for a one of script like this it just has to work. Not going to be used elsewhere. I disagree as it is a few thousand lines of code that others have to read too.2 -
When people use one character variable names in their code I'm just like:
How do you guys live like this... 😰1 -
Unsure , if I should name my variable name as 'info' or 'infoFromDbAboutUser_RequiredForSessionValidation' for a method named 'functionToValidateUserAndCheckSessionIdOrAssignSessionIdIfNotAssigned'
Please help, I am unable to decide. :/10 -
Names a variable Y, names another Q, yet another U. While still writing looks back at Q. What's Q supposed to mean? Closes laptop and walks away.
-
I'm so used to camel casing variable names that when I wasn't concentrating properly just now I called a variable "outPut"1
-
Found a clever little algorithm for computing the product of all primes between n-m without recomputing them.
We'll start with the product of all primes up to some n.
so [2, 2*3, 2*3*5, 2*3*5*,7..] etc
prods = []
i = 0
total = 1
while i < 100:
....total = total*primes[i]
....prods.append(total)
....i = i + 1
Terrible variable names, can't be arsed at the moment.
The result is a list with the values
2, 6, 30, 210, 2310, 30030, etc.
Now assume you have two factors,with indexes i, and j, where j>i
You can calculate the gap between the two corresponding primes easily.
A gap is defined at the product of all primes that fall between the prime indexes i and j.
To calculate the gap between any two primes, merely look up their index, and then do..
prods[j-1]/prods[i]
That is the product of all primes between the J'th prime and the I'th prime
To get the product of all primes *under* i, you can simply look it up like so:
prods[i-1]
Incidentally, finding a number n that is equivalent to (prods[j+i]/prods[j-i]) for any *possible* value of j and i (regardless of whether you precomputed n from the list generator for prods, or simply iterated n=n+1 fashion), is equivalent to finding an algorithm for generating all prime numbers under n.
Hypothetically you could pick a number N out of a hat, thats a thousand digits long, and it happens to be the product of all primes underneath it.
You could then start generating primes by doing
i = 3
while i < N:
....if (N/k)%1 == 0:
........factors.append(N/k)
....i=i+1
The only caveat is that there should be more false solutions as real ones. In otherwords theres no telling if you found a solution N corresponding to some value of (prods[j+i]/prods[j-i]) without testing the primality of *all* values of k under N.13 -
Just going through some old code from git repo's and code examples and I have a message to every dev out there after seeing some of the code quality...
Never... ever... ever fucking give variables with names like vx, tr and sq.
Give your variables names that explain what they are, it is so fucking hard trying to follow code that has 2 letter variable names and there is a special place in hell for you :-)3 -
My company provides license for Intellij IDEA Ultimate but I've customised my Vim for development according to my convenience so I use Vim instead.
Except for changing variable names across multiple files. IDEA's refactoring is the only thing I am using IDEA for.6 -
Thanks Airtel for tweeting me your variable names!
This will lead me to the great good. Thank you for showing me the way to attainment of peace and immense control of myself and the world...
NOW FUCKING SHOW THE VALUES OF THE VARIABLES!!!!3 -
Just had to debug a piece of code for the 5th time today and I'm starting to lose my mind. Why do programmers insist on using single-letter variable names?! Is it really that hard to come up with something more descriptive? I mean, I get it, "x" is easy to type, but so is "counter" or "iterations". Does anyone else feel like they're just constantly fighting a losing battle against the entropy of poorly written code?22
-
Decided to return to writing again and take yet another break from coding and decided to restart my book that I'm working on...
I swear coming up with variable names is fucking easier than working on the first chapter .-.13 -
I have to create python parser (3.6) using code provided by client (2.7), that they used in their company, and it is full of crap like:
if a==1:
if not b:
c = [1,2,3]
if a==2:
if not b:
c = [1,2,3]
if b:
c = [1,2,4]
Or:
text = ""
for i in something:
text += "real text " + some_string + " \n"
text += "another line " + some_string + " \n"
text += "and another " + some_string + " \n"
text += "and so on " + some_string + " \n"
... (many lines instead of one appended text block)
Of course above variable names are just for shortening code, but there are variables like oo, ooo, var_ or var__... cause you know, PEP8 does not exist.7 -
class XXX
{
public:
std::vector<std::wstring> m_Files; // Recently used files
why not just use:
class XXX
{
public:
std::vector<std::wstring> m_RecentlyUsedFiles;
FFS4 -
python machine learning tutorials:
- import preprocessed dataset in perfect format specially crafted to match the model instead of reading from file like an actual real life would work
- use images data for recurrent neural network and see no problem
- use Conv1D for 2d input data like images
- use two letter variable names that only tutorial creator knows what they mean.
- do 10 data transformation in 1 line with no explanation of what is going on
- just enter these magic words
- okey guys thanks for watching make sure to hit that subscribe button
ehh, the machine learning ecosystem is burning pile of shit let me give you some examples:
- thanks to years of object oriented programming research and most wonderful abstractions we have "loss.backward()" which have no apparent connection to model but it affects the model, good to know
- cannot install the python packages because python must be >= 3.9 and at the same time < 3.9
- runtime error with bullshit cryptic message
- python having no data types but pytorch forces you to specify float32
- lets throw away the module name of a function with these simple tricks:
"import torch.nn.functional as F"
"import torch_geometric.transforms as T"
- tensor.detach().cpu().numpy() ???
- class NeuralNetwork(torch.nn.Module):
def __init__(self):
super(NeuralNetwork, self).__init__() ????
- lets call a function that switches on the tracking of math operations on tensors "model.train()" instead of something more indicative of the function actual effect like "model.set_mode_to_train()"
- what the fuck is ".iloc" ?
- solving environment -/- brings back memories when you could make a breakfast while the computer was turning on
- hey lets choose the slowest, most sloppy and inconsistent language ever created for high performance computing task called "data sCieNcE". but.. but. you can use numpy! I DONT GIVE A SHIT about numpy why don't you motherfuckers create a language that is inherently performant instead of calling some convoluted c++ library that requires 10s of dependencies? Why don't you create a package management system that works without me having to try random bullshit for 3 hours???
- lets set as industry standard a jupyter notebook which is not git compatible and have either 2 second latency of tab completion, no tab completion, no documentation on hover or useless documentation on hover, no way to easily redo the changes, no autosave, no error highlighting and possibility to use variable defined in a cell below in the cell above it
- lets use inconsistent variable names like "read_csv" and "isfile"
- lets pass a boolean variable as a string "true"
- lets contribute to tech enabled authoritarianism and create a face recognition and object detection models that china uses to destroy uyghur minority
- lets create a license plate computer vision system that will help government surveillance everyone, guys what a great idea
I don't want to deal with this bullshit language, bullshit ecosystem and bullshit unethical tech anymore.11 -
I needed to update this function to add some more functionality. And this is what i did.( I did added more functionality though)
Will I be fired?5 -
I just hate it when a classmate just waits for you to do the work first so that they can copy it.
This recent project we had was a pretty good example. Most of them didn't know what to do while I on the other hand actually READ the documents for the technology we were using so it gave me sort of a head start. They eventually asked me to do one part of their work first so that they can copy off of what I did and I mean EVERYTHING. A pure copy paste of my code while only changing the variable names. Genius1 -
I've been writing Java the last few days. Really makes me remember why I enjoy writing objective c / swift so much. It's not necessarily the crazy syntax of objective c. It's the conventions behind the languages. It's very easy to make your code read like prose. Which when you become used to this it's very hard to jump back into spaghetti code with abbreviated variable names and such.3
-
I have a co-worker who won’t stop “refactoring” our codebase. He will go on a long tangent — under the guise of working on a proper story — and then reveal proudly after a few days that he now introduced a new middle-layer into the code which will help us such and such.
I have never seen any benefit from this. I think sometimes cleaning up variable names is nice, but a lot of the things just add noise and complexity. He’s a junior dev, I’m a senior dev. My progressional opinion is that he is doing a bad job. Management doesn’t know the full extent and the lead programmer scolds him every now and then but in the end let’s the code changes pass code review. “It has already been implemented so what’s the harm”.
Then the rest of us are stuck with horrible merge conflicts. I recently noticed that some new business-important unit tests that I wrote were mysteriously gone. Oops — lost in some misguided refactoring I guess. I’m assuming they were failing after the refactor, so clearly they had to go... Fortunately the underlying logic still works I think.
His main tactic in all of this seems to be to just use argumentative stamina. He will lose discussion after discussion but doesn’t seem to care. He’ll just talk and talk. And the in the end the lead tech gives in. And/or doesn’t have the energy to catch the error introduced.
I swear, the company would be better off without him. Maybe even better if we keep paying him but he just cleans the toilets instead. Sometimes I almost believes he gets up in the morning to come to work and just fuck with people all day.2 -
Saw a counting variable in code. It was a necessary counting variable, so that is not what this is about.
However, this is a US based company that has a somewhat PC (no cursing) and professional cultural facade.
This variable was called "cnt". How the hell did that one not get caught in peer review? I have gotten dinged for having "possibly offensive" variable names (think Point5Hit though I have never written that as a variable name). It was funny. But I have changed it because that's just lazy.9 -
I spent the whole day coding in python (usually I code in php or perl) and this language is a fucking joke. C'mon, why everything have to be done in such a weird way? And don't say it's python way because it's bullshit way. Want some examples?
", ". join(str(x) for x in array)
to join array of integers. wtf is that?
True|False
why in hell you need the first letter to be uppercase when your own fucking standard says to use lowercase letters in eg. var names and method names. why?
math.isnan(float(x))
to check if a variable (expected to be integer) is NaN. I won't fucking comment that...
Even prolog don't have such stupid things6 -
Rant!
Why enforce a 90 character limit in code file (C++)
It does not make readability any better..
you either break up functions that barely exceed the limits
or
start making nonsense variable names just because they are short.20 -
First-time goona work on frontend(my worst nightmare).
That too Angular.
That too on a file containing 900 LOC.
That too with no proper naming, variable names x,e, obj.
That too with no comment.
Cant take help as I am the lead(name-sake, small team, I have 6month more experience than others)
I have 2 days(thank god for the weekends).
Fuck...Fuck...I missed writing CLI apps.7 -
I need guidance about my current situation.
I am perfectionist believing in OOP, preventing memory leak in advance, following clean code, best practices, constantly learning about new libraries to reduce custom implementation & improve efficiency.
So even a single bad variable name can trigger my nerves.
I am currently working in a half billion $ IT service company on a maintenance project of 8 year old Android app of security domain product of 1 of the top enterprise company of the world, which sold it to the many leading companies in the world in Govt service, banking, insurance sectors.
It's code quality is such a bad that I get panic attacks & nightmares daily.
Issues are like
- No apk obfuscation, source's everything is openbook, anybody can just unzip apk & open it in Android Studio to see the source.
- logs everywhere about method name invoked,
- static IV & salt for encryption.
- thousands of line code in God classes.
- Irrelevant method names compared to it's functionality.
- Even single item having list takes 2-3 seconds to load
- Lag in navigation between different features' screens.
- For even single thing like different dimension values for different density whole 100+ lines separate layout files for 6 types of densities are written.
- No modularized packages, every class is in single package & there are around 100+ classes.
Owner of the code, my team lead, is too terrified to change even single thing as he don't have coding maturity & no understanding of memory leak, clean code, OOP, in short typical IT 'service' company mentality.
Client is ill-informed or cost-cutting centric so no code review done by them in 8 years.
Feeling much frustrated as I can see it's like a bomb is waiting to blast anytime when some blackhat cracker will take advantage of this.
Need suggestions about this to tackle the situation.10 -
Well this is the thing. I have been starting to replace a lot of my shit with Golang. I think it is a great language because of one small fact: it is a boring language.
With this I don't mean that it is not incredibly fun to use. It is and honestly I feel that a lot of the concepts that I had from C passed quite nicely with some additions. The language does not do anything special and there is no elegant code. It works in a very procedural fashion without taking into consideration any of the snazzy things found in JS, Python, c# etc etc. Interfaces and struct make sense to me, way more than oop does in other languages. I don't need generics with the use of interface parameters and I have hadly found a situation in which I have to strive too far away from the way things are done with Go to be happy with it, then again my projects are not hard or by any means groundbreaking (most of them deal with logistics or content management and a couple of financial apps that I am rewriting in Go from work)
The outcome is fast and easy to read since idiomatic go is for the most part very readable(no people...single letter variable names are by no means a standard and they should feel ashamed from it)
I miss the idea of a framework, but not so much and the docs and internal code for Go is just way top inviting. I believe the code to be readable enough than anyone that has gotten used to the syntax and ideas of the language can just jump in and start learning. This is the first language that I have learnt from studying the code as it is inside of the standard lib, the same I cannot say for any other language or framework.
Also, it play beautifully nice with vs code.
I dunno man, I feel that I am doing something wrong. I have projects built in Node, php, python, ruby and spring java as well as .net core and I still find Golang way more appealing simply because it goes harder than Python with "one preferred way" to do things.
The lang does not make me feel like a pro, i certainly develop in it at pro speeds, but it was made with beginners in mind to built fast and concurrent apps, with the most minimal syntax possible.
I guess my gripe with it is that it gets shunned from this, saying that it ignored years of lang research to make it as dumbed down as possible. Which it did, lack of generics amongst other things certainly make it seem like, but I will not say that it was poorly designed. Not at all, I believe it is a testament of amazing engineering. To be able to create such a simple yet amazingly powerful language.
Wish there were more to it. Wish there was a nice gui lib or a ml framework comparable to the ones offered by python and java. But I guess such things will come with time.
I feel stupid with this language.
And that is fine.5 -
Started a new job this week, picking up the front end development of a property management system, since they're old developer just left.
Oh my god was his code bad, inconsistent use of js versions e.g only sometimes using lambda for anonymous functions, variable names that were a single letter, no comments, no documentation, and over 30000 lines split into almost 30 js files, following the logic of it is as fun as a hedge maze with no exit.2 -
I need some opinions on Rx and MVVM. Its being done in iOS, but I think its fairly general programming question.
The small team I joined is using Rx (I've never used it before) and I'm trying to learn and catch up to them. Looking at the code, I think there are thousands of lines of over-engineered code that could be done so much simpler. From a non Rx point of view, I think we are following some bad practises, from an Rx point of view the guys are saying this is what Rx needs to be. I'm trying to discuss this with them, but they are shooting me down saying I just don't know enough about Rx. Maybe thats true, maybe I just don't get it, but they aren't exactly explaining it, just telling me i'm wrong and they are right. I need another set of eyes on this to see if it is just me.
One of the main points is that there are many places where network errors shouldn't complete the observable (i.e. can't call onError), I understand this concept. I read a response from the RxSwift maintainers that said the way to handle this was to wrap your response type in a class with a generic type (e.g. Result<T>) that contained a property to denote a success or error and maybe an error message. This way errors (such as incorrect password) won't cause it to complete, everything goes through onNext and users can retry / go again, makes sense.
The guys are saying that this breaks Rx principals and MVVM. Instead we need separate observables for every type of response. So we have viewModels that contain:
- isSuccessObservable
- isErrorObservable
- isLoadingObservable
- isRefreshingObservable
- etc. (some have close to 10 different observables)
To me this is overkill to have so many streams all frequently only ever delivering 1 or none messages. I would have aimed for 1 observable, that returns an object holding properties for each of these things, and sending several messages. Is that not what streams are suppose to do? Then the local code can use filters as part of the subscriptions. The major benefit of having 1 is that it becomes easier to make it generic and abstract away, which brings us to point 2.
Currently, due to each viewModel having different numbers of observables and methods of different names (but effectively doing the same thing) the guys create a new custom protocol (equivalent of a java interface) for each viewModel with its N observables. The viewModel creates local variables of PublishSubject, BehavorSubject, Driver etc. Then it implements the procotol / interface and casts all the local's back as observables. e.g.
protocol CarViewModelType {
isSuccessObservable: Observable<Car>
isErrorObservable: Observable<String>
isLoadingObservable: Observable<Void>
}
class CarViewModel {
isSuccessSubject: PublishSubject<Car>
isErrorSubject: PublishSubject<String>
isLoadingSubject: PublishSubject<Void>
// other stuff
}
extension CarViewModel: CarViewModelType {
isSuccessObservable {
return isSuccessSubject.asObservable()
}
isErrorObservable {
return isSuccessSubject.asObservable()
}
isLoadingObservable {
return isSuccessSubject.asObservable()
}
}
This has to be created by hand, for every viewModel, of which there is one for every screen and there is 40+ screens. This same structure is copy / pasted into every viewModel. As mentioned above I would like to make this all generic. Have a generic protocol for all viewModels to define 1 Observable, 1 local variable of generic type and handle the cast back automatically. The method to trigger all the business logic could also have its name standardised ("load", "fetch", "processData" etc.). Maybe we could also figure out a few other bits too. This would remove a lot of code, as well as making the code more readable (less messy), and make unit testing much easier. While it could never do everything automatically we could test the basic responses of each viewModel and have at least some testing done by default and not have everything be very boilerplate-y and copy / paste nature.
The guys think that subscribing to isSuccess and / or isError is perfect Rx + MVVM. But for some reason subscribing to status.filter(success) or status.filter(!success) is a sin of unimaginable proportions. Also the idea of multiple buttons and events all "reacting" to the same method named e.g. "load", is bad Rx (why if they all need to do the same thing?)
My thoughts on this are:
- To me its indentical in meaning and architecture, one way is just significantly less code.
- Lets say I agree its not textbook, is it not worth bending the rules to reduce code.
- We are already breaking the rules of MVVM to introduce coordinators (which I hate, as they are adding even more unnecessary code), so why is breaking it to reduce code such a no no.
Any thoughts on the above? Am I way off the mark or is this classic Rx?16 -
Me:put proper variable names so that i can remember later what this loop does
After writing some good names
Me: i will remember it i am just gonna put initials
After a week or two.....
Me:wtf these a,b,c,d,i,j,k,l variables do2 -
“Oh I don’t have access to the repo and I’ve been on leave for 2 weeks, I’ll just pair* with you all day over VC”
*pair = question all your variable names5 -
The CS instructor who was (maybe an adjunct?) who no matter what homework we turned in gave us randomly different grades. We actually all handed in the same hw one time to see what would happen (only changing variable names and such), and confirmed it. Also, he used to call me J-Lo when I'd raise my hand to answer questions. (I was fit and am Latina) The second time he did it, I sternly corrected him in front of the whole class. He stopped after that. And yes he was gone from the school soon after!5
-
So there is this program with legacy code from 15 years ago the client is in love with. Every time we try to accomplish something it proves that the mf who wrote it was so lazy and incompetent that he should have never chosen this profession. Goto, one-two letter for type and variable names. Dude even wrote an ascii decoder as if he would be payed for lines of code. Today we found a code where a rows of data was misindexed by one (we incorrectly assumed that we could extract some data from it but the column we wanted to use was just there for decoration, it was not actually used). the calculations the system uses are replicated for each interface with duplicate lines of code so the same binary data can show different values because of the multipliers.
If I could I woukd go back in time and bang the guy's head to the desk emphasising each word like "You - should - quit - and - never - ever - write - code -again"6 -
Does anyone else include greek letters in their JavaScript variable names just to fuck with co-workers?1
-
People that argue that anyone who doesn't understand their one or two letters long variable names are idiots.2
-
Got commissioned to write a simple js function. Drafted in python. Changed up some variable names while translating, but forgot to change one, and changed another to the old name... Spent a week trying to find the bug in a 30 line piece of js that worked perfectly in python. FML1
-
It would have to be variable names for classes. I mainly use C#, but I'm sure this applies to other languages. You need a name for the instance variables, the parameters for the constructor, and properties.
-
Why some single letter variable names looks ugly to me, for example: c, i and j (and even k) are the most used (mostly in for loops) but does not look ugly.. why?
Ugly
for (int a = 0; a < 10; ++a)
Not ugly
for (int i = 0; i < 10; ++i)24 -
Is it just me or is GitHub Copilot having a stroke the last couple of days?
Usually it's amazing but lately it's been getting variable names, indentation, parentheses and more wrong.
It just wrote a line that is indented with 446 spaces xD
If this is some A/B testing, I want to join the other group pls.2 -
Been trying to update some really old C++ piece of code.
And all the comments and variable names are in FR*NCH.
Apparently they didn't had accents in the keyboards back then, because they used stars instead.
Makes it really hard to tell commented code from French comments.
Obs: I don't speak nor can read French. Neither does anyone in my team.11 -
Started working as a "working student" in an it company to write unit tests. (which then will be executed automatically - so automated unit tests)
Realised that I write more or less the same code just changing the names and some parameters (sometimes more if it's not an number but a bool for example but it's pretty much the same scheme)
So I bought a tool for 1$ to use "auto complete" on custom templates.(I type testgetbool and the tool replaces this to the test case only asking for the variable name.)
So now I'm writing automated automated tests 😁😅
(which is btw pretty boring but cost & time effective)2 -
Been looking at a new hires code and hes decided to strip all of the whitespace out of a file as well as changing variable names to things such as date and date2.....2
-
You ever sit down to code, all pumped up and ready to conquer the digital world, only to have your computer decide it's the perfect time to install updates? "Sorry, can't work right now, I'm busy optimizing your experience," it says, while you sit there twiddling your thumbs and wondering who asked for this update in the first place.
And let's talk about variable names. Who thought naming things would be the hardest part of programming? You start with `count` and `index`, but by the end of the project, you're using variables like `reallyLongVariableNameThatDescribesExactlyWhatThisThingDoes`. It's like playing a game of how many characters can you type before your fingers revolt.
Then there's the joy of debugging. You sprinkle `console.log()` like breadcrumbs through your code, trying to find where things went off the rails. Half the time, you realize you've been chasing the wrong rabbit down the wrong hole, and the other half, you discover the bug is some obscure edge case that you couldn't have predicted in a million years.
But hey, it's not all doom and gloom. There's a weird satisfaction in solving those coding puzzles, like when you finally get that algorithm to work or refactor your code into something so elegant, it feels like you've sculpted a masterpiece out of digital clay.
So here's to all the coders out there, navigating the ups and downs of curly braces and semicolons with a mix of determination and exasperation. May your code compile, your bugs be minor inconveniences, and your computer never decide to update right when you're on a coding roll!!3 -
Being victim of an arbitrary worplace's culture on dev experience and documentation makes me a very frustrated dev.
Often I do want to document, and by that, I don't mean laying an inline comment that is exactly the function's name, I mean going full technical writer on steroids. I can and WILL get very verbose, yes, explaining every single way you can use a service - no matter how self explanatory the code might look.
I know developers (and me included) can, and sometimes will, write the best variable and function names at the time, wondering if they reached the peak of clean, DRY code that would make Robert Martin have a seizure and piss himself, only to find weeks later after working on something else that their work is unreadable. Of course.
I know the doc's public, it's me, and I've done this.
But then again explain for the people in the back how the FUUUUCK are we meant to suggest improvements, when we are not the ones who are prioritising features and shit WITH the business?
Just email me when the fucking team recycles, and no new team member knows how to even setup the IDEs because this huge piece of monumental shit called CompanyTM is also run by VPN. Fuck, no one wants to access that garbage, you have no docs.
I once tried setting up a culture for documentation. I did an herculean amount of work studying what solutions were internally homologated, how steep the learning curve would be from what we had at the moment (NOTHING, WE HAD FUCKING NOTHING, jesus christ, I even interviewed SEVENTEEN other squads to PROVE they FUCKING NEED
DOCS
TO WORK
You know what happened to that effort?
It had a few "clap" reactions on a Teams meeting and it never reached the kanban.
It didn't even made it to backlog.
I honestly hope that, someday, an alien fenomenon affects the whole company, making their memories completely reset, only to have the first one - after the whole public ordeal on why our brains became milkshake -, to say: "oh, boy, I wish we had documented this".
Then I will bring them to the back and shoot them. -
What a fucking idiot I am... When I was rewriting the names of variables I changed them form "phone_number" to phoneNumber. I didn't realised I changed the variable in post request too and who could quess it'll fuck up the whole request. So here I am, 3 hours later with only half of my hair... but at least with working request2
-
Not a specific bug, but I always have that satisfactory feeling when I fix a bug inside a code like this:
1. Spaghetti af
2. Duplicated af
3. Heavy use of static fields instead of passing via callback when required
4. variable names like: textbox1 ..etc.
5. No comments
It is true that is a huge pain in the ass to deal with, but then I look at it as I was able to create something out of that mess, I mean all is mixed up nothing is clear, no clue where it starts and what caused it, but then I put the pieces together and end up with a solution of what I thought to be: It will never be solved when that mess is here.
Not an excuse for messed up code, I try fixing whenever possible, but hey, at least I did not run away and give up -
The "Progress 4GL", now "OpenEdge" doesn't only allow you to abbreviate reserved words, it goes even further.
It allows you to abbreviate database field names.
Yup. Make a spelling mistake and you are messing with a different field.
Forget to declare a variable and there's a field in scope beginning with the same letters? It'll cheerfully assume you mean that field.
This is truly the WORST, most bone-headedly STUPID decision ever taken in the entire history of programming languages.
I defy anyone to offer anything worse than this. -
So my friend had an idea for a game and asked me if I could help him develop it. Now, he understands how the code works and can even write quite a bit himself. On several occasions (including today) this happened:
*writes code*
*tests code*
Me: Hmm... this isn't working like it's supposed to
Friend: It looks pretty good, maybe check to see if everything is in the right order
*checks code*
*tries alternative solution*
*checks again*
Me and friend: Well this is even worse than before
*presses ctrl+z a lot to go back to the original*
*opens new project*
*writes new code for same purpose*
*checks code*
Both of us: IT WORKS!!!
*checks again just to be sure*
Both of us: IT STILL WORKS!!!
*compares new code to original code*
Me: It's the exact same code with different variable names!!! Why did this not work before?
Friend: No idea
*puts new code into main program*
*it still doesn't work*
Reasons Java makes me cry sometimes4 -
So as a student developer with years of background in web development (including both front and backend), c++, java and c#, I was more than surprised when I found out my Informatics assignment hadnt received the proper excellent mark. In fact both me and a friend of mine who has been working with C++ in particular for years got a --mark.
// The assignment was the most simple Windows Forms Application with 2 buttons and a textbox
When we asked about that the teacher said we hadn't labeled the buttons and textboxes, though we had actually taken our time to put labels next to each UI element that would need usage directions.
Though what she meant was renaming the actual variable names, those being textBox1, button1 and button2.
We of course got really mad, because w both follow the accepted naming conventions for each of the languages we write in. Arguing was to no avail. Even telling her that variable naming was not in the assignment instructions was pointless as she said it had been self explanatory..
The others for whom computers are powered by magic, did their assignments as they had memorized everything that teacher had shown them. Why? Because she didn't teach them how to code in the first place. So they copied what would work.
Fucked up educational system, sadly nothing new..
Oh and btw, the naming she uses and teaches students to use is:
button1 - btname
label1- lbname
textBox1 - tbyear2 -
This error, which took me a long time to find, demonstrates the importance of useful variable names.
Using the Wolfram Language:
pp = {};
For[i = 0, i <= Max[p], i++, If[Count[p, i] != 0, pp = Join[pp, {{i, Count[pp, i]}}], -1]];
pp
Outputs:
{{1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {7, 0}, {8, 0}, {9, 0}, {10, 0}, {11, 0}, {12, 0}, {13, 0}, {14, 0}, {15, 0}, {16, 0}, {17, 0}, {18, 0}, {19, 0}, {20, 0}, {21, 0}, {22, 0}, {23, 0}, {24, 0}, {25, 0}, {26, 0}, {27, 0}, {28, 0}, {29, 0}, {30, 0}, {31, 0}, {32, 0}, {33, 0}, {34, 0}, {35, 0}, {36, 0}, {37, 0}, {38, 0}, {39, 0}, {40, 0}, {41, 0}, {42, 0}, {43, 0}, {44, 0}, {45, 0}, {46, 0}, {47, 0}, {48, 0}, {49, 0}, {50, 0}, {51, 0}, {52, 0}, {53, 0}, {54, 0}, {55, 0}, {56, 0}, {57, 0}, {58, 0}, {59, 0}, {60, 0}, {61, 0}, {62, 0}, {63, 0}, {64, 0}, {65, 0}, {66, 0}, {67, 0}, {68, 0}, {69, 0}, {70, 0}, {71, 0}, {72, 0}, {73, 0}, {74, 0}, {75, 0}, {76, 0}, {77, 0}, {78, 0}, {79, 0}, {80, 0}, {81, 0}, {82, 0}, {83, 0}, {84, 0}, {85, 0}, {86, 0}, {87, 0}, {88, 0}, {89, 0}, {90, 0}, {91, 0}, {92, 0}, {93, 0}, {94, 0}, {95, 0}, {96, 0}, {97, 0}, {98, 0}, {99, 0}, {100, 0}, {101, 0}, {103, 0}, {104, 0}, {105, 0}, {106, 0}, {107, 0}, {108, 0}, {111, 0}, {112, 0}, {116, 0}, {118, 0}, {122, 0}, {125, 0}, {136, 0}, {137, 0}}
As opposed to the expected output, which should have no 0s as the second values in any of the tuples.
I spent a large amount of time examining the code to generate p before realizing that the bug was in this line.3 -
For the new/aspiring developers:
1. If you are still looking to learn more, but you don't know where to go, start brainstorming. Make a list of projects you could make and sort them by difficulty. Put the ones you could do now at the top of the list, and the ones you aren't sure how to do yet, at the bottom of the list. As you go through them, if you want to do something but aren't sure how, just hop onto an irc chat and everyone will be glad to help. As you go through the projects, your logic and program design skills should improve, as well as your knowledge of programming.
2. Put comments in your code. Seriously. If you are working on a project and suddenly stop working on it for a week or more, you will go back to look at that code and be extremely confused. If you are making something open source, its even more important. If people can understand the code, they are more likely to contribute to it.
3. Try not to focus on code for too long. The longer you work, the more tired your brain gets. Eventually you get tired and make really stupid decisions in your code.
4. Don't code while tired (look at #3)
5. If you are writing code as an assignment, make sure to rename all variables to proper names before submitting it. The instructor will likely not be pleased to see variable names with the f-bomb in them. -
Have some downtime today, so since I lucked out and found some old backups (from before I used Git) of a project I was planning on revisiting, I decided to fire it up and see what I can do to get that going again.
And discovering just how much my coding style has changed since then...
[Code is in PHP, for reference]
* Virtually no documentation (whereas my current style is near-obsessive with PHPdoc blocks)
* Where comments exist, they only use // and are a full tab after the end of the line
* All assignment operators are dutifully aligned on tabs
* Have to update the entire codebase because it relies on deprecated `mysql_*` calls
* Have to flip all of the quotes throughout the codebase because I used double-quotes as my primary at the time instead of single quotes.
* Also relied on magic quotes for injecting variable content into strings
* Associative array practices varied; sometimes the names are encased in double quotes, but I just hit a block where it's all leaving it to the compiler to interpret unquoted string literals
And perhaps the most egregious so far...
* Any time we get database results back the process for cycling through them is to do `$count = mysql_num_rows($result);` (or $count2, etc.), then do a `for ($i = 0; $i < $count; $i++)` (again, or $j, $k, etc.), instead of just a simple `while ($data = $result->fetch_assoc())`2 -
the worst project without without documentation I had to work with was a huge web 1.0 webapp that had been compiled / uglified into a huge blob of javascript with meaningless variable- and function names that were no longer than 3 characters. needless to say, the original source code was gone and the original author as well. Spent weeks figuring out where to implement the new feature, while it could have been a few hours of work.1
-
When you spend 3hrs finding a bug which causes the logic to be incorrect, only to find out the you have given same variable names for diffrent purposes
-
Bruhhh why you use random single character in your variable names in javascript src code? Do you have uglifier installed in your brain?18
-
What does my current job hate descriptive names? Like to the point of active antagonism? We're a subscription based service. Why is SubscriptionExpiration the date you log in? Why does SubscriptionStatus only contain the name and id of product you're subscribed to and nothing to do with an actual status? All I need is the date a user subscribed. Why is this so hard!?!?7
-
Any other language: Hey fuckface, you can't name this variable by a single letter, tf is wrong with you? use some descriptive shit.
Golang: lmao fuck u
I really find it interesting how we use short variable names for items in golang. Kinda makes sense when you think of it. Most of these items come up in short methods for which the mental model lets you know and remember what you are doing, they even make sense when going through the std lib in which that shit is all over the place. YET years of going by other languages has made me squint my eyes a bit in frustration every time I see it.
Say for example that a function is implementing io.Writer. What would you call the method parameter? you could argue that writer would be sensible since it has it in the signature, but what about when the io.Writer in itself is a file or a socket or whatever? writer would be funny or strange? nah fuck it just w, it makes sense, but x wouldn't. I find these points to make sense even if i don't like them.
Would, now, this practice be acceptable in C? you are supposed to write the same modular code with C in which you compose large functionality in separated units of code, yet I am sure this practice of single name variables is something that C engineers dislike greatly.
Are go devs just doing this out of blind love for their preference in languages? and how would this work if mfkers add generics to go(I hope not, Go is simple enough to understand in order to extend functionality through the empty interface, but that is a preference of mine as well)
The more I use Go the more I like it to be honest, I think the code looks ugly syntactically, but that is subjective as all hell and based on my constant preference for a language to look like Ruby, which even though it might not be everyone's cup of tea it remains to my eyes as the most beautiful language in existence, again, an obvious personal preference.18 -
Nothing like having to work on a codebase which has most of the class and variable names in a language you don't speak :/8
-
People have good coding style right up until they use a new language, then it's like they're back at uni. Having to explain basic things like good names or what should be a member variable, don't add comments like "sets variable x"2
-
Starts search and replace.
Trys to replace a type in the whole Project.
Syntax Check: lol no, apparently everything is broken now, good job
(literally my whole project was marked red)
Reverts changes
(project still marked red)
Syntax Check: lol what? Your code already looked like shit before, won't let you compile this.
It was a bug which breaks the syntax check after big replace requests. Had to start a new project and copy my code step for step, so it didn't break again. However I've forgotten to replace the type before I copy...
Another story regarding this shit:
Renames Variable
IDE: oh, let me help you by replacing all old var names with the new one
Agrees
IDE: oh shoot, didn't know it could break things
Wants to revert
IDE: did you think I would go through this mess again?! Do it yourself!3 -
I swear these underclassmen are in a contest to see how many unique one letter variable names they can come up.1
-
I wasn't happy with one of our UI views for editing a database query that consisted of about 50 fields ("editing" being the operative term here, not just viewing. It had to be two-way). Everything was hardcoded and defined manually, with each block of ~10 lines being repeated and mostly identical apart from the occasional double inline field and name of the variable. It had "just ended up that way" over time due to the variable names in the UI being different than the names of the variables that came from the API.
I decided to overhaul it all where I defined the different input components and which fields should be included, then made a function which would generate the page based on these definitions. It was about 500 lines of modularized functions and classes where the class for the actual view was about 50 lines- compared to the 1400+ lines of the previous version.
But, it didn't work. It should, but it "just didn't". There was no error. All I got was a blank, solid white page. I could make a drastic change or try something completely different and I would get the same error, same blank page. API fetch succeeded, value assignments succeeded, the object exists, but if you iterated it it was... empty.
I started getting really discouraged that I had made it too abstract. Maybe I actually made it more complex and unreadable than before. Maybe just hardcoding it all was the better solution after all. Maybe I had gone against KISS and overdesigned it.
I was up pretty late and everyone had gone home. When the last guy left there was that mood where "yeah if I can't make this work we'll just use the current version...".
Turns out I had tried iterating over a property of the set of fields to render, rather than the entire collection. In the old method the variables were a member of an object, but now they were its own object, a change I had made to isolate the set of values which were to be viewed/edited and make them easier to pass back and forth. This member existed since I hadn't cleaned it out yet, but it was empty.
I had been banging my head against this for a whole day and I was ready to admit I had made a mistake and wasted my time before discarding it all, but then I backspaced this one property and the interface went from empty to rendering perfectly and with all functionality intact. I swear god rays were coming out of my screen. -
My most challenging task during development is choosing variable names.
I make a mess during this process.5 -
Xcode Lockup #35: Changing Variable Names
You right click on a variable and get the opportunity to change the name throughout the project. Yea!
It does this funky visual collapse thing which is rather nice, showing you everywhere it is used. Fancy. And the world needs more fancy, doesn't it.
For some reason instead of letting me change the variable, I get the Beach Ball Of Death and Xcode unceremoniously quits. BUT NOT BEFORE THE FUCKER SAVED THE PROJCT FILE STATE. What?
Now I re-open the project and yep, we are back into the variable name change fancy interface and Beach Ball Of Death. Looks like the project file is now fucked.
But it was oh so important to give me the fancy folding interface... we (Xcode dorks) will fix the defects later.
Time to do some research and find an Xcode manager mailing address... cuz I'm really tired of this shit...
https://www.ipoopyou.com/orders/new3 -
One of the guys I go to college with asked me for help. I took one look and saw his variable names...
int numberOfCarsInParkingLotSinceLastChecked = 0;
Explained the issue. Or tried. He kept interrupting to ask me about random nonsense ("Would you walk naked into walmart for $500?"). Got fed up, told him to work on it my own.
Fast forward 2 years, and he's erasing my group's planning on whiteboards with "SAVE" on them. Week after week.
I hate that guy.3 -
We're talking about coding standards and someone on our team wants us to avoid the protected keyword because it allows for variable shadowing.
The lead architect wants to avoid levels of inheritance whenever possible; trying to keep only Interfaces and Implementations (and he names all of the Implementations with the same class name plus "Impl").6 -
We only recently started and we can really see the benefits of code review.
It motivates you to follow the standards, writing good quality code and using variable/function names that makes sense. Especially that you know someone is going to read through it.1 -
I do contracting for different companies who get too much work on their hands and a deadline on their ass, and it’s always a trip to see how amateurish some of their developers are.
Like who the fuck names a major variable ‘abc’ or ‘xyz’ !!!!
Also they clearly don’t know how to ask equivalence if statements as I got a chain of if else statements that were written like
if (decision>0 && decision<2)
//Code
else if (decision>1 && decision<3) ...etc1 -
Hey so this just came up and i have no idea how could i ddg this so ill just ask here.
I know you can use namespace{} in typescript but is there something similar in js (es6)? We are making a game and the variable names are getting scarce so it would be nice if we could like menu.offset or something. I know static variables in classes are a thing but im asking about namespace-y stuff here.3 -
Wk25: Objective C. I was working on a project for a plugin, the host for which was in objective C. Basically the language lets you get away with arbitrary code injection and runtime inspection of everything. You can print class names, function names and variable names, then use all.
We had to "use" these features slightly creatively to get access to everything we needed. And symbol stripping doesn't stop jack.1 -
Spent a few hours wrestling with AMD ROCm to get it working. Had to change my kernel a few times, install different versions of the rocm packages, and in one case selectively upgrade a package. I also need to run my programs with a few shady environment variable exports to work around some bugs. The whole thing looks shaky right now, nowhere near as simple as CUDA. Also, horrid names (seriously AMD, what's with the 3dgy names).
However once I got it working it works pretty well, happily training stuff via tensorflow-rocm, with decent performance. This is also probably a good project to contribute to, I'm nowhere close to AMD's engineers at this stuff but basic bug fixing and quality of life stuff are probably within reach.3 -
Out of everything in this assignment, I just know I'll lose more marks for shitty variable naming than any missing features.
Commenting? Perfectly acceptable. Use of functions and classes? Perfectly acceptable.
Variable names? perfectAcceptableMaybeFileOneButAsAString
I don't get how I'm so shitty at it! I currently have shit like file input, file input as string, file input as vector, I didn't know that would be the hardest part!1 -
so some controversial opinions
Our company is moving most of our code style to snake_case, even the JavaScript. Here's our resoning:
Take the CustomerAccountMembership model. In our Python server, we would access it as obj.customer_account_membership, in JavaScript as obj.customerAccountMembership and our API endpoint as api/path/customer-account-membership. Thus we had several String utility functions such as `camelize`, `kebabChop` (which is ironically camelCased) and `snakeify`, and we would use them in translating from URL path to JS to Python, which was troublesome.
Now HTTP allows _underscores_ unescaped and do not pose any significant meaning. JavaScript also accepts it as a valid character in variable names. On the other hand, HTTP is strictly lower-cased, and all computer languages use the -dash- to signify subtraction. Sooo the _underscore_ is the only style that is compliant everywhere.
Unless, of course, we go with customeraccountmembership, which I refuse to do.
I'm not that deep into code character rules.
Opinions?7 -
When you have a long line like this...
if ($obj->getStupidlyLongNamedThing() + $hard + $harder * $hard / $harder + $obj->getAlsoStupidLongThing([$sillyLongExpression, $thing]) > $obj->omgThisIsInsane());
If you're just going to be lazy and break it up however where where ever so it looks like crap...
if ($a->b()
____&& $a->c());
Then I urge you to do one of two things:
* Shut up your face and turn on word wrap in the IDE rather than manually doing it even worse.
* Break the long parts into variable assignments or something.
* (or get a wider screen)
Example:
$a = $obj->getStupidlyLongNamedThing();
$b = $hard + $harder * $hard / $harder;
$c = [$sillyLongExpression, $thing];
$d = $obj->getAlsoStupidLongThing($c);
$e = $obj->omgThisIsInsane();
if ($a + $b + $d > $d);
With sensible variable names.3 -
I tend to write with long variable names instead of using too many comments to explain what i am doing in the code. Is it wrong?1
-
Any good books/reads when it comes to analyzing existing code bases/tracing?
I recently started a job with a decade old C code base with no documentation that requires me to break apart and modularize and I’m kind of losing my mind. There’s no comments nor properly variable names...1 -
My AP Comp Sci teacher back in highschool. She spent a lot of time making BS assignments to get me out of bad habigs. (Uninitialized variables, public variables in Java, bad documentation, cryptic variable names [x, y, string q], etc.)
-
Dear bash script dev,
maybe you don't know, but they won't pay you more if you use fewer chars in your scripts.
Well, at least i hope you didn't know this; because if turns out that you consciously and deliberately wrote your variable names like a blind man would play scrabble, and now i have to deal with names like $tre_img , $cnt_aprn , $catlow3 etc... then YOU ARE AN A**HOLE 😤😡3 -
According to project manager :
You will just write an 'if' and two 'for' condition in the code. That's it. 😉
According to developer :
Should I code that generically. 🙄
According to software architect :
Change those variable names. And also that code was written huge unexpectedly, you must move this another service.🤔
According to DB Admin :
Put on an index this table. 🤬😠 -
Now where do i start. Hmm. Oh. How about a mountain of nested ifs. Or, super god codes. How about some unreadable variable names.
-
OCD driven development
- level of recursion determined by how much the algorithm bothers you
- too much and nothing is ever finished
- not enough and code is shitty and unmaintainable
- can result is longer variable names
- takes longer to name a variable
- text slightly misaligned requires hours of debugging time
- balanced by "OMFG that will take forever to fix" Sometimes...
- can lead to unobjective code reviews1 -
Maybe I shouldn't code today... or get more sleep.
Every single bug I had today was due to referencing the wrong variables... and not including 'this.'
How do you guard against creating variables with the same names in method and class scope?2 -
When the rest of your team doesn't know how to spell and use "colour" "grey" as variable names.
😑 It's "color" "gray" as far as I'm concerned.2 -
Just to clarify my previous rant:
In this case, refactoring meant changing class, method and variable names -
Have to translate an API library from Ruby into PHP for work, and I swear it's all of the worst pieces of BASIC and Swift thrown together. To top it off, looking up a symbol chart for it to try and get a handle on the symbols they love to throw in front of variable and method names is useless because "symbol" is a freaking type in this language! Arrays are apparently called "hashes" now, and I can't quite tell if modules are supposed to be namespaces or classes yet...
If Ruby has redeeming qualities, I'm definitely open to hearing them. Right now I'm kind of feeling homesick for vanilla C, however...1 -
I need advice fellow developers, am I stubborn?
So I lost an argument in my team regarding constant vs variable directly in a method for stored procedure names.
I separated names of procedures into their own StoredProcedureConstants file because it makes it very easy to see all procedures used in a project and refactor their names if necessary. Argument against was that you loose time creating a constant. Am I silly if I am alergic to seeing quotation marks stuff without its designated purpose throughout the code?
Their way is adding var procedureName = "cc.storeProcedureName" directly in a method. I just can't find my peace with it. To me this is a magic string.
Am I being unreasonable?3 -
Productivity hack - For me, it’s mostly a single word - planning. I wasn’t always good at it, definitely not yet a “master” of it, but breaking that proverbial elephant up into smaller pieces, and organizing a plan of action for dealing with them is the #1 productivity “hack” for me. Sorry that it’s not an actual shortcut, or anything…I personally don’t believe in those anymore. Complementary habits to this are thoroughly commenting code, having descriptive commit messages, file names, and variable names, maintaining documentation. Use that Readme.md. This is true of any project, even if I’m the only developer - never underestimate your own ability to totally forget shit.1
-
One of those "you have got to be kidding me moments":
struct Speaker: UnitNode, MemBufferBase {
typedef UnitNode super;
…
}
And then elsewhere:
#define Node UnitNode
#define Speaker AudioSpeaker
Never seen anyone typedef base class as super in C++ nor use a #defined variable as a class name. And of course elsewhere in the code class names are normal literal a but are referenced via a #define (and sometimes not via the #define)... The same obfustication done two different ways! -
So apparently the variable names foo and bar come from an old military term FUBAR which means f-ed up beyond all recognition.... Those OG UNIX guys hid their memes really well
-
I’m paying for GitHub Copilot and it is serving me well in about 40% of the cases. It is nice to not have to type entire utility methods. Sometimes it also try-catches things that I wouldn’t generally do with a new library that I haven’t used before. Pretty cool.
I also used the Cursor IDE, that isn’t very useful in general cases, but helped me read and understand a horrible piece of 200 line-function with extremely cryptic variable names. Sadly, my free quota there ended.
I hope GitHub Copilot Chat is better at explaining things.2 -
Spent the day refactoring old copy-pasted astronomical code with minimal commentary, cryptic variable names and missing mathematical symbols. Self documenting code my ass.1
-
OMG I want to throw my monitor out of my window right now!
Someone just went through my entire project and un-cuddled all of my braces, AND THEN STARTED ALL MY FUCKING VARIABLE NAMES WITH AN UNDERSCORE!!! Are you kidding me??? People actually do that??? That's literally worse than php's brilliant idea of starting every variable name with a dollar sign!
I can't even read my own code anymore...2 -
I am busting moves rn. I'm in the bathroom but the surge of energy is making me pump my arms like the time Leo Messi scored a clutch winner against Valencia in 2019
Remember the plugin I referred to in this rant? https://devrant.com/rants/6019851/...
Yup! I managed to subdue that fossilised codebase. Effected all changes required. To have a rough idea about how ancient the code is, its classes use constructors predating PHP 5. It throws away the ~15 years of autoloading, view templates, routing engines, DI, ORMs (NO PDO!!), lower-cased multi word variable names, etc. I'm looking at SCRIPTS with raw functions north of 4-600 lines. The client insisted I zip the folder across
BUT! The good news is, we surmounted it. In fairness to them, it's commendable for one man to have pulled this off. The codebase is massive and appears to have been predominantly written by some Gideon dude. Who knows where he is now
There is one pattern I appreciate –something I wish Transphporm does–some segments of the rendered view are composed using class methods ie instead of having the HTML file mixed with templating syntax, you have class methods that receive the raw data. Then you can extend this class as you wish, overriding just the method that composes the segment you intend to modify. That was elegant to work with. But it can become dreadful if the class expects a specific structure of data (an array with weird keys) that you have no access to sourcing
So, I finally get to enjoy one good evening in 2/3 weeks. I called 2 friends to express an emotion that's not gloomy, but they were unavailable. Will probably get some sleep4 -
The web application which I'm making is fucking big for 1 person and suddenly I'm out of sensible variable names :@
-
Not really a project idea per se, more of a very robust plugin idea or IDE feature (Jetbrains preferably), for suggesting better variable names while writing code.
-
In a legacy application i support written in classic asp, the guy who wrote it names his variable 'ok2go'
where d heck was he going? 😞😞😂1 -
line breaks after 100 or so characters suck. function chaining will look bad in one line, but it doesn't mean we need to limit all our lines to a hard length.
ex:
config.logger.e(TAG, "func() called with: p1 = $p1, p2 = $p2, p3 = $p3, p4 = $p4, p5 = $p5")
this is a standard log that i add at the start of my functions . its easy to autogenerate in intellij , even if my class and variable names are much long (like mVideoAnalyticsManager) . when these variables and their string names add up, they will easily go out of the screen and i won't mind scrolling a few seonds to the left to ensure everything is correct (which 99.9% is)
but a fucking ctrl+alt+l and all strings are broken with a fucking +
+
+
+
+)
AAGh its just irritating ://////4 -
WTF?
W_T_F?
W-T-F?
W$T$F?
how the fuck do you brand codebases?
say you've got a brand called dicks,
and you've got a website, api server, some SDK's, and whatever else. How do you format the codebase names so it's A, usable as a variable name, B clickable at the variable part of the name, C, that's fucking it
dicks-website can't be used in js because
dicks-website = require('dicks-website') won't work
dicks_website can't be used in url's and in general because double clicking any part will select the whole word, so you can't replace dicks_X easily.
dicks$api seems to work, dicks and api are seperately clickable, and usable as a variable in javascript. I already know that the $ sign probably fucks up many many systems so that's probably a no go
has this question been addressed already?4 -
It's always some dumb thing that goes wrong. Like, a semicolon I forgot to type, or a period or a misspelled variable. Last week I spent two hours on a Discord Bot coded in Python that refused to iterate a list of names. I had forgotten to put quotation marks around each of the items in the list so they would register as strings instead of integers. Will it ever get better?6
-
back into some quick and dirty opencv scripting for the afternoon to try to get a report out the door, and boyhave my variable names become, shall we say, gigidy inspiring:
longexposure = np.uint8(cumimage/float(len(ims)))
stacked = np.hstack({cumimage, longexposure}) -
Fuck This.
I thought I was good at giving nicknames (to friends) then suddenly you run out of variable names.
:/ -
Does anyone know if there's a list or something with examples of bad variable names? As in ones that shouldn't be used because they're already used namespaces and such?
It would be awfully convenient in situations where you're not sure if it's an okay name or not. :/ -
YouTube adding some real nuggets of wisdom to the comment section.
In other news, Google is all out of sane variable names and type checking.2 -
Don't you hate it when you run out of variable names and you start using random names and the next time you go to that code you have reanalyze your own code to see what each of those variables does...1
-
senior: it should only take 30 seconds to replace multiple display strings across our code base
well it would be nice if they'd do it then, and somehow i don't think that 30 seconds included checking your work and making sure you don't fuck up other instances of those strings (e.g. in variable names, etc)
maybe you got a clever enough regex to only hit exactly what you want :shrug:1