Thordros,

If you can’t find where you missed a closed parentheses, just add a bunch of them to the end of your project like this…

)))))))))

… until your editor’s syntax helper tells you it’s good. I am very good at coding.

lemmyingly,

I write the parentheses before I start writing inside the block. When something goes wrong, the scope of what I’ve done wrong is narrowed to within that specific block.

Thordros,

You are so wise. 🫢

mindbleach,

Ah, a practitioner of Extreme Go Horse.

0nXYZ,

That the HTML/CSS structure of web programming is absolutely disgusting and not necessary. The internet could be and should be so much more from a developer pov. Also people who double space instead of tab often have their mouths open while mashing space 16 times.

I completely understand and clearly see that web development is the future, but I still think it’s all gross and will always prefer targeted efficient compiled code. Why? Because I’m a huge fucking dork.

sznio,

The internet could be and should be so much more

The internet is already too much.

xigoi,
@xigoi@lemmy.sdf.org avatar

Did you have your mouth open while assuming that indenting with spaces actually involves pressing the space bar?

hellishharlot,

Using single character variable names is always bad practice

Thoth19,

Guess I’ll have to name all of my iterators “it” instead of “I”. That will fix things.

Definitely a hot take though. Bc there are definitely times when it is totally acceptable.

hellishharlot,

Iter works better than I for clarity

UnfortunateShort,

An iterator is commonly understood to be an object and thus something much more complex than a simple integer. This is the exact opposite of more clear.

verstra,

I have a convention to correlate the size of variable scope with its name length.

If a variable is used all over the program, it will be named “response”. If it is <15 lines, then it can be “res”. If it is less than 3 lines, it can be only “r”.

This makes reading code a bit simpler, because it makes unimportant, local vars short and unnoticeable.

hellishharlot,

Why though? Intellisense helps you write out the full name. And instead of response why not call it whatever the data you’re expecting to be

lemmyingly,

I agree because it makes the code easier to follow in 6 months time.

JuneFall,

Could you comment a couple of examples? At best some that signifiy the importance with them as verstra wrote.

9point6,

Except i right? Something like counter seems unconventional and unnecessarily verbose

hellishharlot,

Index can be useful but start looking for mapping and sorting functions. Or foreach. If you really must index, sure go use index or I if it’s conventionally understood. But reading something like for I in e where p == r.status is really taxing to make sense of

9point6,

Oh yeah, I map, filter and reduce pretty much everywhere I can. But sometimes you need the index and i is so commonly understood to be that, it’d say it could even be less legible to deviate from that convention

hellishharlot,

In what world is


<span style="color:#323232;">for (int index = 0; index &lt; objectToIterate; index++)
</span><span style="color:#323232;">{
</span><span style="color:#323232;">    // DO YO THANG
</span><span style="color:#323232;">}
</span>

less coherent than


<span style="color:#323232;">for (int i; i &lt; objectToIterate; i++)
</span><span style="color:#323232;">{
</span><span style="color:#323232;">    // DO YO THANG
</span><span style="color:#323232;">}
</span>
9point6,

The world where the convention is i

hellishharlot,

What’s incoherent about the first one? Why is index bad beyond standards

9point6,

It’s not incoherent, it just takes a tiny bit more effort to mentally parse as it’s not a stereotypical for loop. Maybe it’s just me, but let me try and explain

With the i example if you’re familiar enough with a language, your brain will gloss over the unimportant syntax, you go straight to the comparison and then whether it’s incrementing or decrementing.

With the other example, the first my brain did was notice it’s not following convention, which then pushes me to read the line carefully as there is probably a reason it doesn’t.

I’m not saying it’s a huge difference or anything, but following code conventions like this makes things like code reviews much easier cumulatively.

indepndnt,

Honest question: is there a mapping function that handles the case where you need to loop through an iterable, and conditionally reference an item one or two steps ahead in the iterable?

hellishharlot,

Not that I’m aware of but that’s a condition where you’re thinking with an index. What’s the difference you’re looking for?

indepndnt,

Something like parsing a string that could have command codes in it of varying length. So I guess the difference is, is this a 1-, 2-, or 3-character code?

I have something like this in a barcode generator and I keep trying to find a way to make it more elegant, but I keep coming back to index and offset as the simplest and most understandable approach.

hellishharlot,

So you could generate lists of 1, 2, and 3 character code items rather than looking at index +1 or something.

drathvedro,

In js there’s reduce. Something like


<span style="color:#323232;">arr.reduce((result, currentValue, currentIndex, original) => {
</span><span style="color:#323232;">if(currentIndex &lt; original.length - 2
</span><span style="color:#323232;">    &amp;&amp; original[currentIndendex + 2] % 2 === 0 ) {
</span><span style="color:#323232;">    result.push(currentValue / 2) 
</span><span style="color:#323232;">} else { 
</span><span style="color:#323232;">    result.push(currentValue);
</span><span style="color:#323232;">}
</span><span style="color:#323232;">return result;
</span><span style="color:#323232;">}, []) 
</span>

This would map arr and return halved values for elements for which the element two steps ahead is even. This should be available in languages where map is present. And sorry for possible typos, writing this on mobile.

xigoi,
@xigoi@lemmy.sdf.org avatar

In Haskell, you could do something like map (zip list (tail list)) (thisItem, nextItem) -> …

UnfortunateShort,

I’d say except indices in general. Just bloats every line where you need to use them. Imagine writing CUDA C++ where you regularly add and multiply stuff and every number is referenced via (usually) 1-3 indices. Horrible.

SolarMech,

Yeah, but it’s easy to overuse it. If your for loop is much longer. For a few lines I’d agree, don’t bother using something longer.

Code should scream out it’s intent for the reader to see. It’s why you are doing something that needs to be communicated, not what you are doing. “i”, “counter” or “index” all scream out what you are doing, not why. This is more important than the name being short (but for equal explanations of intent, go with the shorter name). The for loop does that already.

If you can’t do that, be more precise. At the least make it “cardIndex”, or “searchIndex”. It makes it easier to connect the dots.

jvisick,

Mostly agree. I’m ok with single characters in a one line / single expression lambda, but that’s the only time I’m ok with it.

anon_8675309,

Always and never are always bad.

DahGangalang,

Counter point:

Always and Never is never bad.

space_comrade,

Counterpoint: using anything other than ‘i’ as your index in a for loop in C or C++ is obnoxious as fuck.

At most I’ll go with ‘it’ for C++ iterators.

uralsolo,

I understand this conceptually, but there’s also a gremlin in my brain that wants me to make every line as short as possible.

hellishharlot,

Big same. Long feels complex until you go back later

Chingzilla,

Hope you don’t write go :D

hellishharlot,

JavaScript, TypeScript, and C# babyyyy

morrowind,
@morrowind@lemmy.ml avatar

Sometimes you’re just using it once and it’s blindingly obvious what it is

tryptaminev,

To be fair everyone with poor documentation thinks the code is blindingly obvious when they write it.

Double_A,
@Double_A@discuss.tchncs.de avatar

Unless you are implementing some mathematical formula. Then link the paper and stick to its variables.

corstian,

Most modern software is way too complex for what it actually does.

secret301,

Abstraction will be the death of traditional software development as we know it

corstian,

Can you explain?

secret301,

No

verstra,

Barges into a lemmy thread Gives a strong, but quite abstract opinion criticizing abstractions Refuses to elaborate further

darcy,
@darcy@sh.itjust.works avatar

:based:

NBJack,

Someone hasn’t read en.m.wikipedia.org/wiki/No_Silver_Bullet yet.

If abstraction was going to kill it, it would have died a thousand deaths already.

secret301,

I have not, about to now tho thanks

rk96,

PHP aint all that bad

darcy,
@darcy@sh.itjust.works avatar

the stack is cool, the language itself sucks, unless compared to javascript

hansl,

Hot take: people who don’t like code reviews have never been part of a good code review culture.

JuneFall,

It is also a situation in which when you don’t have them you can feel smart since you don’t have to find justification for what you do.

drathvedro,

Hot take #2: Unless you have great code review culture, code rewiews are just unnecessary blockers

FMT99,

I see the value, but that doesn’t mean I have to like it :p

newIdentity,

JavaScript isn’t bad. Sure it has its quirks, but it’s not as bad as everyone makes it sound it is

morrowind,
@morrowind@lemmy.ml avatar

I mean it used to be way worse before before google and whatnot poured hundreds of millions into making it better.

NewPerspective,

If white space carries any function that the compiler/interpreter needs to know about like structure or scope, it’s probably not a very good programming language.

sajran,

Genuine question: why? What makes, say a semicolon, so superior to the the newline or tab characters?

To be clear: I don’t think whitespace as a part of syntax is an awesome idea which should be more popular. It’s definitely a bit more error prone in some ways. It’s not perfect. But it’s okay.

I’ve written a lot of Python and I don’t think I have ever seen a syntax error caused by incorrect whitespace. I’m not exaggerating. I regularly forget semicolons in other languages but I never type out incorrectly indented code. Maybe that’s just me though…

Reptorian,

From some one who used Python as it was the easiest solution to few of my problems, and having to experience languages with brackets and/or endif/fi/done as ways to limit scope, I find that having things like brackets and/or scope terminators easier to parse and less error-prone. I’m thinking about moving on to Ruby whenever I had a need where Python would be a good choice, but the time it takes for me to understand a new language is blocking me from that.

UnfortunateShort,

I honestly think the scripting languages like fish have got it right.

Newline by default completes a line and can optionally be escaped. Saves you most of the semicolons and even implicitly highlights multi-line statements.

Whitespace doesn’t matter except for separating names.

Blocks are explicitely ended without braces you can confuse with brackets or parentheses, no matter the coding style.

If Rust and fish had a baby, I think it would be the best language to have ever been created.

NBJack,

How much of that python is written in a shared codebase with multiple active contributors? When was the last time you refactored a module?

Tabs and spaces are invisible. Semicolons are not.

sajran,

A vast majority of the code in question is the code I’ve written for my work projects with multiple active contributors and refactoring is very common too. We all like to shit on Python for various reasons but no one in my environment ever complained about whitespace.

Like I said, I don’t think whitespace is perfect as a part of syntax but I’m much more likely to forget a semicolon than a proper indentation and this applies to any language. I guess it’s not universal tough, because you can often see code with messed up indentation on online forums etc. TBH this is just unthinkable to me, indentation is absolutely necessary for me to be able to read code and reason about it. When I’m thinking about blocks and scopes it’s not because I counted semicolons and braces, it’s 100% indentation.

DeprecatedCompatV2,

How do you feel about line breaks?

jvisick,

Not who you asked but I think they’re important for humans, but syntactically I don’t think they should matter

Thoth19,

Intmain(intfoo){std::out<<"HelloWorld";}

Is a great program and should totally be valid cpp. White space sucks.

/S

mindbleach,

Load-bearing whitespace is the fucking devil. This thread about hot takes is topped by a comment highlighting how people can’t even agree what kind of whitespace to use.

Python - you want code to fail if someone from one camp copy-pastes code from another camp, and the characters that make a difference are invisible?

NBJack,

Load bearing whitespace. Damn, I love that phrase.

Also, if you have to have agreement on the tabs or spaces argument in your codebase in order to get it to compile, you have already lost.

0xc0ba17,

People who insist on using semicolons in Javascript don’t understand why and are just following a cargo cult.

Remove the semicolons, be free.

frezik,

It’s also because my fingers automatically type them for the sake of most other languages. Let me have my muscle memory.

Nested_Array,

iirc semicolons are required in JavaScript strict mode.

0xc0ba17,

They’re absolutely not

FrankTheHealer,

KDE is ridiculously unintuitive and has become too awkward to use to recommend to a newbie.

Arch is not a general purpose distro. Theres too many things that can break it unless you meticulously follow the patch notes and participate in the community.

Vim is overrated.

gpopides,

Not everything should be beginner friendly. Trying to nerf things because they are not beginner friendly should not be how tools/patterns of languages are designed.

Its ok to have more advanced topic that require more knowledge and that people don’t understand from the first moment they see them.

SolarMech,

Yes and no. I mean sure, if you are going to leverage this to gain a significant edge in the market, that works.

If you add a tool to the project, that you need to understand to maintain some parts of it, which adds to the learning curve of someone joining said team, then the gains have best be worth the effort.

We adopt so many librairies/plugins/tools over time that adding more complexity than you need this way is just terrible.

wolf,

Amen! One thing which drives me crazy is that most people confuse beginner friendly and user friendly, the two things are absolutely not the same thing. There is nothing wrong with having tools which are beginner friendly, especially for stuff one does once in a while. There is everything wrong with nerving tools which are for pros or even everyday usage: If I use something everyday I have rather an optimization for the mid or long run, than for the first few hours…

onlinepersona,

Composition over inheritance has become a meme that people repeat without understanding. Both have their uses, but if composition is all you use, then you’re using a hammer on everything. There is no silver bullet in life and most undeniably not in programming.

Also, electron has a reason for existing. If it didn’t have a use, it wouldn’t have the number of users it has. You can’t tell me in all seriousness that Qt, Gtk, Swing, Tkinter is easier to use than electron for the common developer.

fuzzzerd,

While I completely agree with you about electron, I still don’t have to enjoy the fact that companies are outsourcing their lack of development in native tech to my wallet in terms of wasting resources on my device. Now perhaps the cost of the associated services would be higher if they had a native app which is a fair response. I still don’t have to like it.

Written as a user (and occasionally enjoyer) of electron based software.

Spedwell,

It’s especially infuriating when you have a giant like Microsoft rolling Electron on their flagship applications (Teams), and then deprecating support for some platforms (Linux). What’s the point of your nice, memory-gobbling, platform-agnostic app framework if you’re not even going to use it to provide cross platform support?

onlinepersona,

I don’t enjoy it either and will go through the pain of writing GUI apps in anything but HTML,CSS and JS, but the ground beneath me doesn’t exist as no contributions are coming from my side to make an easier electron alternative. There are other places I am hypocritical though.

tastysnacks,

I like electron because it makes my swing apps look efficient and peformant.

onlinepersona,

Now that’s a good joke 😎

Theharpyeagle,

Absolutes in programming are most useful for clickbait and little else. Use what makes sense for your use case, following a trend will only lead to pain.

russmatney,
@russmatney@programming.dev avatar

Types and unit tests are bloat that increase the maintenance cost of whatever code they are involved in. Most types force premature design/optimization. Most unit tests lock up some specific implementation (increasing cost of inevitable refactors) rather than prevent actual bugs.

Nil-punning in clojure has spoiled me rotten, and now every other language is annoyingly verbose and pedantic.

onlinepersona,

Definitely a hot take. Wow.

I do get where you’re coming from, however. Dynamically typed languages are great for prototyping and if you’re dealing with a small codebase, it can stay that way, but IMO large codebases without typing are not fun to navigate and understand.

“Which class am I dealing with now?” is such a common problem that I’d rather have it explicitly written than guessing or assuming to know.

russmatney,
@russmatney@programming.dev avatar

Very happy to share this hot-take :) Definitely code-base and team-size are a huge factor, and I mostly work on my own projects, so each project is very different. still, I expect to get downvoted into oblivion by the last decade’s influx of typey-langs and -devs.

I think most love for types is folks being happy they don’t need to assert on the input to every function, i.e. static analysis and reduced unit-tests. It’s hard for me to not see types as asking folks to pre-design their entire system (by defining types first!), before you’ve even started writing a few functions, which are actually what the system should codify (behaviors, integration tests). It’s also frustrating b/c types don’t guarantee that the system does-the-thing, only that the type-system and compiler are happy, so it’s like pleasing the wrong boss, or some metaphor like that.

I like to work with behavior directly in functions, which should be the same regardless of the type passed in. Unfortunately most dynamic languages have their flaws (js,python,etc), so this kind of opinion suffers b/c of those languages… similar to type-favoring opinions suffering b/c of langs like typescript.

Nil-punning makes me very happy - that’s a hill I will actually die on. Almost every project i’ve worked on, there’s no reason to go out of the way to specifically handle every case of not the right input or oh-no-it’s-null! Whenever you have null, you just return null from this function too, and guess what, everything’s fine - no need to crash and blow up b/c one thing wasn’t there. Mostly this is a complaint about things completely crashing for no reason, rather than being incomplete (i.e. some data missing) but still working for the user.

Anyway, lots of different use-cases, and use the right tool for the job, etc etc. types and unit tests are useful for some things.

Lucky,

In my opinion, pre-designing your code is generally a good thing. Hours of planning saves weeks of coding

russmatney,
@russmatney@programming.dev avatar

Fair! Naming is hard, but maybe that’s no excuse for not defining a thing

sajran,

Meanwhile here I am thinking about pivoting my career from Python to Rust because I’ve grown to hate Python’s lack of typing. I also religiously write unit test even for minor personal projects.

okamiueru,

(psst: you are right)

russmatney,
@russmatney@programming.dev avatar

I suppose i should at least caveat by saying i don’t by any means advocate for all dynamic langs over statically typed, and i agree types/unit tests are necessary for most languages. So please don’t make me write python over rust!

You can get the benefits of types/unit-tests via static analysis on a per-function basis with clojure and a library like malli, and for me that hits a minimalist sweet-spot.

jvisick,

Can you clarify what you meant about types, then? Because I’m not sure I really understand your point there.

russmatney,
@russmatney@programming.dev avatar

Sorry, I liked this hot-take setup and I’m shooting from the hip a bit. Maybe i actually mean objects/classes, not types? Can’t everything just be a bag of key-values, like in clojure?

I have been building mostly prototypes (games and wm-tools) for a year, so most of my context is getting things working to see if they are useful rather than locking them down.

I thought about my argument a bunch, and while i have alot of complaints, it all sounds like non-specific whining to me, so i’ve decided to give up.

types and unit-tests have their place. Fine! I admit it! i was pushing a hot-take I’ve had on a few occasions, and I’m glad to see this programming community is alive and well! If you need me I’ll be in my clojure repl.

sajran,

It’s also important to acknowledge how different is prototyping from writing production code which has to be extendable and maintainable for years by multiple developers.

Your take isn’t even very hot when we are talking about prototyping 😉

Theharpyeagle,

I’m a longtime fan of python, but honestly I don’t know how I lived with it before type hints. It still feels a little backwards from the original design philosophy of python, and it’s more verbose than other strongly typed languages, but it’s come to feel pretty natural all the same.

space_comrade,

Most types force premature design/optimization.

I disagree. What you’re saying is true for Java-like OOP languages because OOP is actually complete garbage if you want to design good abstractions. Types are way more elegant in functional or functional-inspired languages.

russmatney,
@russmatney@programming.dev avatar

I think you’re right re:oop - let’s throw that in there too.

One problem is naming things - bad names/naming conventions can start things off in a bad direction, so you spend forever figuring one out… but do you really need this thing you’re naming after all?

Maybe the hot-take is more like: All code is bad, so less code is better…. what should we drop first?

flan,
@flan@hexbear.net avatar

The hottest of the takes in this thread and it’s not even close. Types and unit tests.

russmatney,
@russmatney@programming.dev avatar

It was pointed out to me i should add OOP. Burn it all down!

darcy,
@darcy@sh.itjust.works avatar

types are bloat for maintenence? id rather get a compiler error in 0.1 seconds than spend hours tracking down where in the code my number was coersed into a string.

BatmanAoD,

The programming languages you use, and the variety of languages you learn, deeply influence how you think about software design.

Software would be much more reliable (in general) if Erlang had become one of the dominant languages for development.

Go sacrifices too much for superficial simplicity; but I would like to see a language that’s nearly as easy to learn, but has a better type system and fewer footguns.

Unit testing is often overrated. It is not good for discovering or protecting against most bugs.

Build/test/deploy infrastructure is a genuinely hard problem that needs better tooling, particularly for testability.

Phunter,

Build/test/deploy infrastructure is a genuinely hard problem that needs better tooling, particularly for testability. (Naturally, this is a hard problem, but I think very few developers are working on it.)

Agreed and it’s not treated as one which is a compounding issue. 😬

redempt,

hard agree. I’m sick of all the “it doesn’t matter what languages you learn” talk because it’s just not true. yes, there are broad foundational skills that apply to nearly every language, but beyond that, you’re specializing, and the way the language you choose is designed will stick with you. I’ve seen the concept that you get accents in programming languages just as much as spoken ones, and I think it’s totally true - when you learn a new language, you’re bringing your habits and assumptions from the last one. so to be honest I don’t care about the language design opinions of people who only know dynamically typed languages

Elderos,

I think unit testing is good at enforcing a spec so other developers know what to expect from your module and how to maintain it. It also kinda force you to dogfood your own stuff.

Imo it is strictly something you do when you write something like a library or any sort of module that you expect other developers to interact with. I’ve seen teams get all smug about code coverage as if this made them diligent. My personal experience is that developers who understand why unit tests are important tend to write better code than those who skip them or do it “just because”.

BatmanAoD,

If I explain myself or add nuance, it won’t be a “hot take” anymore, but here goes…

  • I’ve mostly worked on small teams, but have maintained fairly large codebases (I think the largest single repo I’ve worked in was about 1.5 million LoC). I’ve also maintained software used by other teams, though in fairly small software organizations (under 100 developers total).
  • I’ve written code with 100% unit test coverage, and code with almost no coverage. The 100% coverage was in a library that was intended to be core functionality shared across multiple teams.

I definitely agree that they can be useful as both usage examples and as a way to enforce some rules (and consistency) in the API. But I’m not sure I’d go so far as to call that a “spec”, because it’s too easy to make a breaking change that isn’t detected by unit tests. I also feel that mocking is often needed to prevent unit tests from becoming integration tests, but it often hides real errors while excessively limiting the amount of code that’s actually being exercised.

I also think that actual integration tests are often a better demonstration of your API than unit tests are.

I haven’t used any of these methods as much as I’d like to, but I suspect that each of them is strictly more useful than standard unit testing:

  • contract tests (arguably just a form of unit testing, but not the way I’ve generally seen it done)
  • property-based tests
  • mutation tests
  • preconditions & postconditions (with language support)
Elderos,

Makes a lot of sense. I figure contract tests is more or less what I have been doing then.

I think there is that misconception that unit tests are about validating each line of code and preventing logic bugs. Though obviously you understand that this isn’t just about that, or not at all about that I would argue. Unit tests won’t prevent accidental breaking changes, but you can at least add new tests every time this happen, so you’re at least guaranteed that the next maintainer won’t be doing the same mistake.

In an ideal world we could probably have nothing but integration tests, but in my experience if you only do integration testing you end up working really hard maintaining tests that are prone to break and costly to run. Unit tests are cheap to code and cheap to run, it is a great place to enforce your “contracts” with tests that are theoretically immutable. After those tests are out of the way, you can focus only on the actual interaction between your systems with the more expensive tests.

Anyway, you have a good take I am just blabbering. This is based on my personal experience as someone who only cared integration tests but was later converted by a person much smarter than I am. And then later on by joining a team that exclusively did integration testing, hundred of tests. It was hell (imo), we had to change dozens of tests for every little bit of modification. The rest of the team seemed fine with it though. We rarely shipped bugs but progress was incredibly slow for a module of such low complexity. Testing wasn’t the only issue with that codebase though.

BatmanAoD,

The one part of that that sounds weird to me is needing to change integration tests frequently when changing the code. Were you changing the behavior of existing functionality a lot?

Elderos,

Yes, and the test suites were insane. The program was outputting a lot of data, and we basically asserted on anything and everything for any given integration. I mentioned that testing wasn’t the only issue, well there was a lot of issues. Unfortunately the behaviour changes were requested by the stakeholders and there was no way around it. That being said, had this thing we maintained been properly developed those changes would have been a breeze imo. The actual requirements were very simple.

But anyway, I realize this is maybe an extreme example to paint integration tests negatively, but the point remain. In this scenario, every time we changed a bit of code it broke dozens of integration tests instead of breaking just a relevant integration test, had everything that could have been unit tested been written that way. The integration tests could probably also had been less… exhaustive, but it was probably for the best considering the codebase.

space_comrade,

Go sacrifices too much for superficial simplicity; but I would like to see a language that’s nearly as easy to learn, but has a better type system and fewer footguns.

“Easy to learn” and “good type system” will by necessity be opposing forces IMO. If you want to work with a good type system you’re gonna have to put in the effort, I’m not sure there’s this magical formulation of a good type system that’s also intuitive for most new developers. Hope to be proven wrong one day tho but so far no dice.

BatmanAoD,

I think TypeScript has a pretty good type system, and it’s not too hard to learn. Adding sum types (i.e. enums or tagged unions) to Go would be a huge improvement without making it much harder to learn. I also think that requiring nullability to be annotated (like for primitives in C#, but for everything) would be a good feature for a simple type system. (Of course that idea isn’t compatible with Go for various reasons.)

I also think that even before “proper” generics were added, Go should have provided the ability to represent and interact with “a slice (or map) of some type” in some way other than just interface{}. This would have needed dedicated syntax, but since slice and map are the only container types and already have special syntax, I don’t think it would have been that bad.

NBJack,

The nuances of Go syntax requirements are stupid at times, but I am shocked at how much it helps readability.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • [email protected]
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • Socialism
  • KbinCafe
  • TheResearchGuardian
  • oklahoma
  • feritale
  • SuperSentai
  • KamenRider
  • All magazines