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 - "switch cases"
-
!(short rant)
Look I understand online privacy is a concern and we should really be very much aware about what data we are giving to whom. But when does it turn from being aware to just being paranoid and a maniac about it.? I mean okay, I know facebook has access to your data including your whatsapp chat (presumably), google listens to your conversations and snoops on your mail and shit, amazon advertises that you must have their spy system (read alexa) install in your homes and numerous other cases. But in the end it really boils down to "everyone wants your data but who do you trust your data with?"
For me, facebook and the so-called social media sites are a strict no-no but I use whatsapp as my primary chating application. I like to use google for my searches because yaa it gives me more accurate search results as compared to ddg because it has my search history. I use gmail as my primary as well as work email because it is convinient and an adv here and there doesnt bother me. Their spam filters, the easy accessibility options, the storage they offer everything is much more convinient for me. I use linux for my work related stuff (obviously) but I play my games on windows. Alexa and such type of products are again a big no-no for me but I regularly shop from amazon and unless I am searching for some weird ass shit (which if you want to, do it in some incognito mode) I am fine with coming across some advs about things I searched for. Sometimes it reminds me of things I need to buy which I might have put off and later on forgot. I have an amazon prime account because prime video has some good shows in there. My primary web browser is chrome because I simply love its developer tools and I now have gotten used to it. So unless chrome is very much hogging on my ram, in which case I switch over to firefox for some of my tabs, I am okay with using chrome. I have a motorola phone with stock android which means all google apps pre-installed. I use hangouts, google keep, google map(cannot live without it now), heck even google photos, but I also deny certain accesses to apps which I find fishy like if you are a game, you should not have access to my gps. I live in India where we have aadhar cards(like the social securtiy number in the USA) where the government has our fingerprints and all our data because every damn thing now needs to be linked with your aadhar otherwise your service will be terminated. Like your mobile number, your investment policies, your income tax, heck even your marraige certificates need to be linked with your aadhar card. Here, I dont have any option but to give in because somehow "its in the interest of the nation". Not surprisingly, this thing recently came to light where you can get your hands on anyone's aadhar details including their fingerprints for just ₹50($1). Fuck that shit.
tl;dr
There are and should be always exceptions when it comes to privacy because when you give the other person your data, it sometimes makes your life much easier. On the other hand, people/services asking for your data with the sole purpose of infilterating into your private life and not providing any usefulness should just be boycotted. It all boils down to till what extent you wish to share your data(ranging from literally installing a spying device in your house to them knowing that I want to understand how spring security works) and how much do you trust the service with your data. Example being, I just shared most of my private data in this rant with a group of unknown people and I am okay with it, because I know I can trust dev rant with my posts(unlike facebook).29 -
Fullstack dev: Hey I need your help with one of this method in the service layer (We use Java).
Me: Sure. What’s up!
Fullstack dev: When you get a user ....blah blah blah...
Me (typing code):
if (user != null) { ... }
Fullstack dev: Wait! This won’t work. You need to write this:
if (null != user) { ... }
In Java, you write like this. In JS it’ll work, not in Java.
Me: (also fuck this guy)
He’s among the famous devs in the company - (A very very very famous European bank).
I checked his commits for the frontend (React Native)
switch (some_expr) {
case foo:
return stuff()
break // <— note this
case bar:
return moreStuff()
break // <— note this
// more cases here with break after return statements
}
Me: Hey if you’re returning from a case why are you using a break. It’s dead code.
Fullstack dev: It’ll fall through otherwise.
———————
You’re a fucking dunce! Please drink a litre of Carborane in a rusty HIV infested container! Cheers!
PS More to come!33 -
Wrote a rant yesterday (or recently?) in which I explained that I needed to rewrite the core of something I'm writing in order to make it more extendable/flexible/modular.
Finished the rewrite yesterday and started to write a module (it exists our of modules and one can write a specific module for a specific kind of task) for another use case that has shown itself in the past few weeks.
Fun thing is that part of the core stayed the same and I hardly made changes to the libraries which the core uses a lot but the modules are, except for a few similarities (like one default invoke methods), completely different but do use the libraries to make sure they've got all functions needed to properly fulfill their task.
Ran a rule (what I call something in the project) hoping that everything works together the way it's supposed to and that the config files are interpreted well by the parsing 'engine' (pretty much switch cases and if-elses 😅).
FUCKING BAM IT FUCKING WORKS 😍2 -
Let's see the coder in you.
If I give input: 1 output: 2
If I give input: 2 output:1
Only these two test cases needed.
You should not use control structures such as if,else,for,while,switch etc. (The answer is simple) (Don't cheat)
int number;
cin>>number; //get number
cout<<??????; //Your code53 -
Inspired by the comment I posted on another rant.
My uni decided to be one of those progressive tech schools that start people with Python. Mind you, I had prepared myself with studying as much as I could with math and programming by automating things and similar stuff in our computer when I was at my previous job, so I had a better idea as to what i could expect.
Introduction to computer science and programming with Python or some shit like that was the name of the class, and the instructor was a fat short ugly woman with a horrible attitude AND a phd in math, not comp sci and barely any industrial knowledge of the field.
She gave us the "a lot of you will fail" speech, which to me is code for "I suck and have no clue what I am doing"
One assignment involved, as per the requirements the use of switch cases. Now, unless someo knew came about, Python does not have swio cases. Me and a couple of less newbie like students tried to point out that switch cases were non existent and that her switch case example was in Javascript, not python, curly braces and everything. She told us to make it work.
We thought that she meant using a function with a dictionary and we pass the key and shit, a simple way of emulating the switch case.
NOPE she took points and insisted that she meant the example. We continuously pointed out that her example was in JS and that at the time Python did not have switch cases. The nasty woman laughed out and said that she didn't expect anyone to finish the assignment with full points.
Out of 100 points everyone got a 70. No problem. Wrote a detailed letter to the dean. Dean replied and talked to her (copied her in the email because fuck you bitch) and my grade was pulled up to full mark.
Every other class I had with her she did not question me. Which was only another class on some other shit I can't remember.
Teachers are what make or break a degree program. What make or break the experience, going to college is putting too much faith on people. If you ask me, trade certification, rigorous training is the future of computer science, or any field really. Rather than spending 4+ years studying a whoooole lotta shit for someone to focus on one field and never leave it.17 -
Worst. 2 am on campus, js file for a web app project. It didn't work, no exceptions thrown, no errors. I call the assistant teacher. He calls the teacher. Teacher calls the head of department. Four of us staring at the screen for an hour, trying different browsers, environments etc
3 am, switch cases had semicolons rather than colons. Sleepy coding is the worst.7 -
I excused myself for writing a switch statement with only one case during a code review with thinking it was likely to get more cases in the future. Lead dev said that's okay, then chuckled a little before he showed me a switch statement with two cases added by one of the people who can bypass the review process: case true and case false.6
-
Me : hey do you remember that c++ file ?
Him : which one ?
Me : the one with 69 if-else's and 420 switch cases ?
Him : oh yes I remember, but I don't remember, or do I ?
Me : -_______-7 -
„Couldn‘t figure out how to detect the end of a case, forced every developer to end a case with a break; so it doesn‘t go through all cases“
- the guy who invented switch case10 -
Me: yo DEV2 parse this string into a hashmap. Use regex, 2 rows of code are enough for the job
DEV2: implemented 40 rows of switch/if cases into nested for loop.
Please kill me 🔫🔫🔫🔫🔫🔫🇮🇹3 -
I was in second year of University when I joined the internship, I knew the business idea sucks and he wouldn't be able to carry out the operations either. Little did I know that I will work with the dumbest team ever, literally, the dumbest.
So, the major chunk of the software was outsourced to a consultancy. I was a tech intern, and we were developing an Android App that will save your parking location, let you reserve locations and all etc.
I knew I have stepped on a wrong turf, but again, I had nothing better to do that summer. So, for a very meager stipend, I said yes to a very stupid project. Let the stupidity flow...
~ The boss, had quit his job for this dumb idea with no funding, no team, nothing.
~ He was pursuing a certification course in Android Development from somewhere, where their final project will be a calculator!
~ He had little to no tech skills, hardly knew Java but was leading an Android App Dev project in Java. He had little to no managerial, marketing or sales skills either.
~ For a brief period, I had to work along with the consultancy guys to ramp up their work. They would take backups in a USB drive every evening, and share each others code using the same. VCS died a painful death that day.
~ They hardly wrote functions, rather, wrote very long code in the main (onCreate) function. Code style died of cancer.
~ They couldn't compress an image before sending it to a server. I had to do it for them.
~ Had no concept of creating utility classes.
And best of all,
~ Wrote 20 cases (switch case) with the same code! Instead of using a loop...1 -
dev "no no no, you're overengineering it. You just need one class for that"
Me "but ... Those are different object that share a common interface. The internal logic is not the same, only their output is. You know ... That's the purpose of interfaces"
Him "no no, as i said, you don't need that. Listen, you can put ALL the fields and methods in a single class and then you can use a switch with different cases .."1 -
Inspired by @NoMad. My philosophy is that technology is a means to and ends. We’re a tool oriented species. As it relates to software and hardware, they should be your means to achieve your ends without you needing to think. Think of riding a bicycle or driving a car. You aren’t particularly conscious of them - you just adjust input based on heuristics and reflex - while your doing the activity.
For a long time Software has been horrendously bad at this. There is almost always some setup involved; you need to front-load a plan to get to your ends. Funny enough we’re in the good days now. In the early days of GUI you did have to switch modes to achieve different things until input peripherals got better.
I’ve been using windows from 95 and to this day, though it’s gotten better it’s not trivial to setup an all in one printer and scan a document - just yesterday I had to walk my mother through it and she’s somewhat proficient. Also when things break it’s usually nightmare to fix, which is why fresh installing it periodically is s meme to this day. MS still goes to great lengths with their UI so that most people can still get most of their daily stuff done without a manual.
I started Linux in University when I was offered an intro course on the shell. I’ve been using it professionally ever since. While it’s good at making you feel powerful, it requires intricate knowledge to achieve most things. Things almost never go smoothly no matter how much practice you have, especially if you need to compile tools from source. It also has very little in the ways of safe guards to prevent you from hurting yourself. Sure you might be able to fix it if you press harder but it’s less stress to just fresh install. There is also nothing, NOTHING more frustrating than following documentation to the T and it just doesn’t work! It is my day job to help companies with exactly this. Can’t really give an honest impression of the GUI ux as the distros have varying schools of thoughts with their desktop environments. Even The popular one Ubuntu did weird things for a while. In my humble opinion, *nix is better at powering the internet than being a home computer your grandma can use.
Now after being in the thick of things, priorities change and you really just want to get things done. In 2015 I made the choice to go Mac. It has been one of my more interesting experiences. Honestly, I wish more distros would adopt its philosophy. Elementary only adopted the dock. It’s just so intuitive. How do you install an application? You tap the installer, a box will pop up then you drag the icon to the application folder (in the same box) boom you are done. No setup wizards. How to uninstall? Drag icon from app folder to trash can. Boom done. How to open your app? Tap launch pad and you see all your apps alphabetically just click the one you want. You can keep your frequent ones on the dock. Settings is just another app in launchpad and everything is well labeled. You can even use your printers scanner without digging through menus. You might have issues with finder if your used to windows though and the approach to maximizing and minimizing windows will also get you for a while.
When my Galaxy 4 died I gave iPhone a chance with the SE. I can tell you that for most use cases, there is no discernible difference between iOS and modern android outside of a few fringe features. What struck me though was the power of an ecosystem. My Mac and iPhone just work well together. If they are on the same network they just sync in the background - you need to opt in. My internet went down, my iMac saw that my iPhone had 4g and gave me the option to connect. One click your up. Similar process with s droid would be multi step. You have airdrop which just allows you to send files to another Apple device near you with a tap without you even caring what mechanism it’s using. After google bricked my onHub router I opted to get Apples airport series. They are mostly interchangeable and your Mac and iOS device have a native way to configure it without you needing to mess with connecting to it yourself and blah. Setup WiFi on one device, all your other Apple devices have it. Lots of other cool stuff happen as you add more Apple devices. My wife now as a MacBook, an IPad s d the IPhone 8. She’s been windows android her life but the transition has been sublime. With family sharing any software purchase works for all of us, and not just apples stuff like iCloud and music, everything.
Hate Apple all you want but they get the core tenet that technology should just work without you thinking. That’s why they are the most valued company in the world14 -
KISS, DRY, Path of Least Resistance, Three Strikes and You Refactor, early returns, no array.map when nothing is returned, only use switch when # cases >= 3.
And using var in javascript instead of let/const to piss off my colleagues (and because I understand function scope well)6 -
Working on an Android app for a client who has a dev team that is developing a web app in with ember js / rails. These folks are "in charge" of the endpoints our app needs to function. Now as a native developer, I'm not a hater of a web apps way of doing things but with this particular app their dev teams seems to think that all programming languages can parse json as dynamically as javascript...
Exhibit A:
- Sample Endpoint Documentation
* GetImportantInfo
* Params: $id // id of info to get details of
* Endpoint: get-info/$id
* Method: GET
* Entity Return {SampleInfoModel}
- Example API calls in desktop REST client
* get-info/1
- response
{
"a" : 0,
"b" : false,
"c" : null
}
* get-info/2
- response
{
"a" : [null, "random date stamp"],
"b" : 3.14,
"c" : {
"z" : false,
"y" : 0.5
}
}
* get-info/3
- response
{
"a" : "false" // yes as a string
"b" : "yellow"
"c" : 1.75
}
Look, I get that js and ruby have dynamic types and a string can become a float can become a Boolean can become a cat can become an anvil. But that mess is very difficult to parse and make sense of in a stack that relies on static types.
After writing a million switch statements with cases like "is Float" or "is String" from kotlin's Any type // alias for java.Object, I throw my hands in the air and tell my boss we need to get on the phone with these folks. He agrees and we schedules a day that their main developer can come to our shop to "show us the ropes".
So the day comes and this guy shows up with his mac book pro and skinny jeans. We begin showing him the different data types coming back and explain how its bad for performance and can lead to bugs in the future if the model structure changes between different call params. He matter of factually has an epiphany and exclaims "OHHHHHH! I got you covered dawg!" and begins click clacking on his laptop to make sense of it all. We decide not to disturb him any more so he can keep working.
3 hours goes by...
He burst out of our conference room shouting "I am the greatest coder in the world! There's no problem I can't solve! Test it now!"
Weary, we begin testing the endpoints in our REST clients....
His magic fix, every single response is a quoted string of json:
example:
- old response
{
"foo" : "bar"
}
- new "improved" response
"{ \"foo\" : \"bar\" }"
smh....8 -
My worst legacy code experience:
>10k lines of switch case statement with "some" fall through.
Even fall through for 4 or 5 cases.
This monster was copy pasted and modified over years (Order of the case statements and another fall throughs).
So you can't diff this piece of shit for refactorings.
Luckily I leave that company. -
By Thor (not the god, the dragon), Belial and Thor (the god, this time)...
Just got the sources for the software that runs on the SDR for my project. I think I just found the mother of all legacy code:
The whole behaviour is described in a single, 4000 lines C file. Most of the code is in a giant switch with cases selected from an enumeration with names that don't match their function. All varnames are overly long, yet hopelessly unhelpful. And why three fuck would you use pointer[0].data instead of (*pointer).data or pointer->data like a sane person would !? pointer isn't even an array, so why would you use []?1 -
I'm shitting there hammering out some code butchering some real problems when I suddenly realise I'm surrounded. I look around and yes it's the bloody committee.
The committee is what I call the rest of the department and it is dominated by the old guard which comprises of the programmers that have been around for longer.
None of the old guard can program particularly well but because they had been around the longest they'd all grown senior. The committee had free reign but anyone else doing anything differently has to get approval from the committee.
The only way to code otherwise was to copy and paste existing code then to primarily rename things. If anyone did anything that hadn't been seen before then it would have to be approved by the committee. Individual action was not permitted unless you were old guard.
I swept my headphones away expecting it to be something unimportant. It was.
First things first they announce. We're going to add extraneous commas to the last element of all possible lists separated by comma including parameters or so they say. Ask but why so I do.
Because the language now supports it. They added support for it so it must be the right way someone proclaimed. Does it? I didn't realise we were waiting for it. Why do we want it though?
Didn't you hear? It's all over the blogosphere. It massively improves merge requests. But how I ask?
Five minutes later I grow tired of the chin stroking, elbow harnessing, slanted gazes into the yonder and occasionally hearing maybe its because and ask if they mean when you for example add an element the last element registers as changed from adding a comma. Turns out that's all it is.
How often do we see that tiny distraction and isn't it pointless to make the code ugly just for a tiny transient reduction in diff noise I ask. Everyone's stumped. This went on and on and got worse and worse. But it makes moving things around easy half of them say in unison like the bunch of slobs that they are. I mean really. It doesn't make expanding and contracting statements from multiline to single line easy and it's such a stupid thing. Is that all they do all day? Move multi-line method parameters up and down all day? If their coding conventions weren't totally whack they wouldn't have so many multiline method prototypes with stupid amounts of parameters with stupidly long types and names. They all use the same smart IDE which can also surely handle fixing the last comma and why is that even a concern given all the other outrageously verbose and excessive conventions for readability?
But you know what, who cares, fine, whatever. Lets put commas all over the shop and then we can all go to the pub and woo the ladies with how cool and trendy we are up to date with all the latest trends and fashions then we go home with ten babes hanging off each arm and get so laid we have to take a sick day the following to go to the STD clinic. Make way for we are conformists.
But then someone had to do it. They had to bring up PSR. Yes, another braindead committee that produces stupid decisions. Should brackets be same line or next line, I know, lets do both they decided. Now we have to do PSR and aren't allowed to use sensible conventions.
But why, I ask after explaining it's actually quite useful as a set of documents we can plagiarise as a starting point but then modify but no, we have to do exactly what PSR says. We're all too stupid apparently you see. Apparently we're not on their level. We're mere mortals. The reason or so I'm told, is so that anyone can come in and is they know PSR coding styles be able to read and write the code. That's not how it works. If you can't adjust to a different style, a more consistent style, that's not massively bizarre or atypical but rather with only minor differences from standard styles, you're useless. That's not even an argument, it's a confession that you've got a lump of coal where your brain's supposed to be.
Through all of this I don't really care because I long ago just made my own code generators or transpilers that work two ways and switch things between my shit and their shit but share my wisdom anyway because I'm a greedy scumbag like that.
Where the shit really hit the fan is that I pointed out that PSR style guide doesn't answer all questions nor covers all cases so what do we do then. If it's not in PSR? Then we're fucked.4 -
const ifs = i => {
if (i === 1) return '2'
// (a lot more ifs)
}
const switches = i => {
switch (i) {
case 1: return '2'
// (a lot more cases)
}
}
console.time('time')
for (let i = 0; i < 1_000_000_000; i++) ifs(i)
console.timeEnd('time')
// time: 637ms
console.time('time')
for (let i = 0; i < 1_000_000_000; i++) switches(i)
console.timeEnd('time')
// time: 949.524ms25 -
That moment where you see code of someone who riddles their code with nested if-else and if-elseif statements.
I don't remember writing an else statement for years. It almost always can be avoided (and the rare cases where it makes sense I prefer the switch statement).
Yet I never grasp why people do:
```
if(someCondition) {
// huge nested code block
} else {
throw new Error();
}
```
Instead of
```
if (!someCondition) {
throw new Error();
}
// continue in the normal scope
```
And then we have experts that like doing:
```
if(someCondition) {
if (bar) {
$foo = 'narf';
} else {
$foo = 'poit';
}
// huge code block
if($foo == 'narf') {
if(yetAntherCondition) {
// huge code block
} else {
throw new Error();
}
// huge code block
} else {
throw new Error();
}
} else {
throw new Error();
}
```
Help!
If ever was to design a programming language, I'd forbid the `else` and `elseif` keywords. I have yet to find an instance where I could not replace some `else` by either a guard or an early return or introducing some polymorphism.1 -
I'm writing all the dev things I know in a docs site as a means to be hireable should I need to switch jobs.
I'm not gonna go too deep on how I'm doing it. One style I'm enjoying is making every article take only one page long, and if they take longer, maybe consider breaking it into another article.
Fuck long articles. Yes, that's a bit autistic.
But I will describe the challenges I'm finding (which are quite many) in further detail.
One of them is that words can be ambiguous. Production can mean the production environment but it can also mean production in plain english.
And there are tons of cases like this.
Because of this, I felt a lot of confusion in my beginner days. So it my objective to write this as to prevent as much confusion as possible.
Granted, I don't want to write "development for dummies". Software is complex. But because it's complex on its own, I don't want to add complexity to the learning process through obscure language usage.
"Fine", I say, "I'll disambiguate". But this means I find myself branching out very often into fundamental or commonly used software terms like "framework", "model", "scaffold", "algorithm", "viewport", "breakpoint", etc.
Another challenge is reaching good levels of completitude.
This means I have to explain that obscure CLI flag I never used in my life.
If I don't do this, then what makes my docs different than these superficial dev.to or medium posts? Nothing.
But trying to explain EVERYTHING about a software can generate a lot of frustration: I never finish.
It also makes me wonder "do I even know shit?". I think some amount of insecurity is healthy and pushes myself forward.
But at some point it's kind of making me feel like shit. Maybe I just need to keep learning.1 -
At an interview, interviewer keep on hitting me with theoretical questions, why python don't have switch cases, what is default sorting in java etc... I told him I don't bother about theory, then this conversation happened.
I(Interviewer)
I: do you know time complexities?
me: Yes
I: okay, tell me a few sorting or searching algorithms which have logarithmic complexity?
me: binary search (with loud and confident voice)
I: he told, in worst case it will have O(n) tell me any other
me: *thinking*
I: what are you thinking? what is time complexity of merge sort
me: O(nlogn)
i: it's logarithmic.... -
Good morning devRant.
Here's a good question. What is the worst tool you've tried that was recommended to you? Could be a text editor, IDE, STACK setup, etc.
For me that tool was Eclipse with JavaEE. Not Spring/Hibernate or Maven, but specifically JavaEE in Eclipse. I probably lost over 2 1/2hours configuring that beast to work and it would still break every half hour or so. Drove me crazy enough to switch to IntelliJ. It's one of the rare cases where a free application just wasn't as good as a paid for application. :/10 -
IMO it depends to what one means by "made it".
switch(made_id) {
case "is a developer" -> "when one develops a software product, regardless of whether for work or personal purposes";
case "got a dev job" -> "when one gets a dev job";
case "can be called a dev" -> "when job title has .*developer.* in it";
case "is a good dev" -> "when job title has .*senior developer.* in it";
}
For me personally it means getting a SW development job that pays my bills and keeps growing my savings account. Pretty much like @AlmondSauce said it.
I for one iterated through all the cases above and each time I achieved the goal I felt like I "made it".
Appetite comes with eating -
PHP features the best of the wicked minds.
In this legacy but still used project just so to save the scourge opening tcp connection (I suppose) some guy wrapped js libs like jQuery, mootools in a script tag.. In individual php files. Then from a main.php include all those libraries. This produces a 2Mb file to send to the client and it's not even compressed. This guy never had any thought about maintenance.
This is one symptom of the problem with PHP that every company developed or have in-house undocumented unmaintained frameworks made by devs without any idea about testing, security and more.
Gosh in a previous work I've seen a PHP cron that used arguments passed to a switch case of 25 cases.
It took 19 years for the language to get a standard, meanwhile leaving the web landscape as a mess of bad coding practices, bad design practices, SQL injections, outdated tutorials and more. PHP is the example that it's not because it's used on almost all the web that it's good, it only means that's it's cheap! Cheap like asking a red neck to build you a car and he tows (deploy) it to your house with his own tow truck he built.
https://blog.codinghorror.com/codin... -
A doctor heals, a gardener plants, a baker makes some bread, a driver brings you to a location, only IT is nonsense in the most use cases.
Maybe I will switch one day to another and more useful job which makes more sense7 -
!rant
It's been over a year since I installed elementary OS on my laptop and I still haven't regretted switching from Ubuntu. There were a few issues initially while setting things up but similar issues even used to happen when I was using Ubuntu.
The desktop shell of elementary OS is perfect for my use cases, its easier to switch between virtual desktops and the app bar at the bottom makes it easier for me to transition between my Macbook and Linux based laptop with ease.
The only major issue I found was no proper multi-monitor support.
The closest thing I found to the simplicity of this shell/distro was Zorin OS, although at this point I am just too lazy to try it out.
P.S. Feel free to mention your favourite Linux distro in comments 😁9 -
SonarQube is obnoxious in it's moronic ideas that demonstrate lack of understanding of the languages it's analyzing.
In C# there exists a special kind of switch-case statement where the switch is on an object instance and the cases are types the instance could polymorphically be, along with a name to refer to that cast instance throughout the case. Pattern matching, basically.
SonarQube will bitch about short switch-case statements done in this way, saying if-else statements should be used instead. Which would absolutely be right if this was the basic switch-case statement.
This is a language with excellent OOP features. Why are your tests not aware of this?
I can't realistically ignore the pattern because that would also ignore actually cases where it's right. And ignoring the issue doesn't sit right with me. How does it look when a project ignores tons of issues instead of fixing them? -
The moment when u forget to break from a switch statement from its one of its cases and try to figure wtf is wrong with ur code.1
-
Can someone please explain the benefits of this in Kotlin:
var x = if(a !=b) {
z
}else{
y
}
Even for a conditions with one line body it looks bad in reading and getting a clue of what does this do.
I mean whats wrong with:
var x: MyObject
if(a!=b){
x = y
}else{
x = z
}
Even in switch cases (or as kotlin calls: when) True one return source, but now good luck finding the last line that is the actual returned value ...15 -
to me, "var a" is unorthodox. i'd rather use switch(expectedOutput){case 1:a=1;break;case 2:a=2;break;case 3:a=3;break;case 4:a=4;break;case 5:a=5;break;case 6:a=6;break;case 7:a=7;break;case 8:a=8;break;case 9:a=9;break;case 10:a=10;break;case 11:a=11;break;case 12:a=12;break;case 13:a=13;break;case 14:a=14;break;case 15:a=15;break;case 16:a=16;break;case 17:a=17;break;case 18:a=18;break;case 19:a=19;break;case 20:a=20}1
-
So we're supposed to test even the most imporbable edge cases to make sure that our software is reliable. But there is a limit. We let a marketing intern go bug hunting. We use the same component in two tabs of our SPA, but we distinguish them through some parameters. The intern found that if you switch back and forth between those two tabs super fast a couple of times, the program for some reason confuses those two tabs and swaps them. Now management has listed it as a priority. When are the customers _ever_ going to do that?!4