this post was submitted on 25 Nov 2023
41 points (95.6% liked)

Programming

17378 readers
421 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

Do you keep them in your IDE, or elsewhere? Do you have an app for that? Are they easily shared?

I realized I have no system at all but could use one to make it easier to find code I've written and might need again some day.

By snippets, I am referring to any chunk of code / text in any format or language, of any length.

Thanks!

EDIT A DAY LATER: Thanks you all! Reading all these ideas, I got inspired to create my own little web app. Wish me luck... :)

top 50 comments
sorted by: hot top controversial new old
[–] Zeth0s@lemmy.world 69 points 11 months ago (2 children)

I create proper libraries. I don't do snippets because they make code dirty, redundant and difficult to read on the long run.

I actively discourage people in my team to use snippets copy and pasted everywhere themselves. If it's reusable code, it should be usable by everyone and well tested

[–] abhibeckert@lemmy.world 20 points 11 months ago* (last edited 11 months ago)

This. Replace commonly used code snippets well written code that reduces them to one or two lines of code and take advantage of auto-complete in your IDE.

For the rare case where that doesn't make sense... I'm I'll ususally find (or create) an extension/plugin for my IDE. Something that can be smarter than any snippet.

[–] savedbythezsh@sh.itjust.works 4 points 11 months ago (1 children)

The only case I use snippets for is for debug code that I use often. Sometimes there are things I find myself doing a lot for debugging that don't have any reason to be in code (e.g. nicely formatting certain objects for debug purposes)

[–] xmunk@sh.itjust.works 1 points 11 months ago

Write a function or macro so you can reuse them. The project I work on has dozens of debug assisting code paths. Here are two examples: normally when talking to the db you'll call run($sql, $boundVariables) on a handle. Alternatively you can call debug($sql, $boundVariables) to have the handle run the query normally then rerun the query prefixed with EXPLAIN (blah,blah) to get the execution plan. We also have assembleEmulatedQuery($sql, $boundVariables) which will manually replace all the binding tokens in the SQL with their values, do some string escaping and return a big honking string that you can dump into the database... that last one is useful for performance tuning since it can be used to easily capture expensive query forms. Also - assembleEmulatedQuery will throw an exception on our production environment because it's unsafe due to the potential of SQL Injection.

Build debugging functions and add tests over them - future you will thank you!

[–] Lysergid@lemmy.ml 26 points 11 months ago (5 children)

Please, can you give an example of such code snippets? I’m wondering what people consider reusable in different projects.

[–] sbv@sh.itjust.works 21 points 11 months ago

Seriously. A snippet library seems like a significant anti-pattern.

[–] pe1uca@lemmy.pe1uca.dev 6 points 11 months ago (4 children)

Not OP, but I'm thinking about the example in vs code: https://code.visualstudio.com/docs/editor/userdefinedsnippets
Some boilerplate code for libraries and frameworks I constantly use.
I'd be more interested in syncing the VS code snippets as they are automatically available in a file for each language and have the autocomplete stops.

load more comments (4 replies)
[–] derpgon@programming.dev 4 points 11 months ago (4 children)

In PHP, a lot. Unit test are boilerplate 90% of the time, getters and setters (although they can be done via Generate), ORM classes with your default shebang (autoincrement ID), and I could go on and on.

I dislike snippets for code like "key this array by some logic" - this should be reusable via a dedicated helper or service.

load more comments (4 replies)
load more comments (2 replies)
[–] douglasg14b@programming.dev 14 points 11 months ago (1 children)

I go full chaos and look up where I last used it when I need a snippet...

[–] perishthethought@lemm.ee 2 points 11 months ago (1 children)

It's got to be here somewhere... (Search for way too long.........) Dang, I guess I'll just write it again from scratch

Yeah, this is what I am looking to avoid.

[–] douglasg14b@programming.dev 1 points 7 months ago

I have a weird knack for reverse engineering, and reverse engineering stuff I've written 7-10 years ago is even easier!

I tend to be able to find w/e snippet I'm looking for fast enough that I can't be assed to do it right yet 😆

[–] mrkite@programming.dev 13 points 11 months ago (1 children)
[–] perishthethought@lemm.ee 4 points 11 months ago

For github users, yes. I am not one, most of the time.

[–] varsock@programming.dev 10 points 11 months ago (3 children)

I would appretiate if someone could explain the practical utility of snippets because it just dawned on me how useful they might be.

[–] coloredgrayscale@programming.dev 8 points 11 months ago* (last edited 11 months ago)

Easy access to small snippets of code you often need, but putting them in their own library would be crazy.

  • Opening a file / db connection
  • parsing xml/json/... ,
  • template for unit tests,
  • import and initialization of framework at work.

Depending on the IDE snippets can also move parts of the code around: (intellij live templates)

  • variable.notnull -> if (variable != null) {... }
  • "text %s".format -> String.format("text %s",...)
[–] perishthethought@lemm.ee 2 points 11 months ago (1 children)

Think about how you write code. Is it all new, or are there functions / API calls / whatever that you might re-use from time to time?

If that's possible, think about how you go find that code now. Wouldn't it be cool if you could type a short bit like, "funcA" and boom! your IDE filled in the whole function? Or, worst case, you flip over to another tool, find the snippet you want, copy and paste it into your work.

That's what I am thinking about, at least. I'm just not sure how I want to get there yet.

[–] crimsonpoodle@pawb.social 1 points 11 months ago

You could just write a little terminal utility that puts the string literal of the snippet in your copy buffer with a little search and db for finding the right one and storing new ones— might have to have some weird cases for cross platform tho

[–] Luvon@beehaw.org 1 points 11 months ago

If you are unfortunate enough to code in a language where the “designers” thought EVERYTHING should be multi command structures in an English like syntax…..

Then you basically need them to autocomplete how to correctly write everything 😅

I use Abap at work from sap. Its special.

They have over 3000 key word structures. It’s ridiculous.

[–] brewbart@feddit.de 9 points 11 months ago (4 children)

I would recommend looking into personal knowledge management. I manage mine in Obsidian and treat snippets like permanent notes

[–] perishthethought@lemm.ee 1 points 11 months ago (2 children)

Hmmm, I am using Logseq for that kind of note rn, but don't really like the way it handles code. I assume that's a markdown problem, not a Logseq one, but I should look again.

[–] nichos@programming.dev 1 points 11 months ago

I'm using logseq for snippets too. I find it to be adequate. 3 ticks and the language will get you monospace and syntax highlighting:

cd $HOME
ls
[–] brewbart@feddit.de 1 points 11 months ago

Well, Obsidian does have a bazillion plugins that make handling all kinds of content easier. I'm pretty satisfied with the out of the box experience though

load more comments (3 replies)
[–] shnizmuffin@lemmy.inbutts.lol 8 points 11 months ago

I keep my framework-specific reusable code in git repos that I install as git submodules in the repos of actual projects.

[–] sboulema@programming.dev 8 points 11 months ago (1 children)

I selfhost Snippetbox. Real easy, limited in features but does the job!

[–] perishthethought@lemm.ee 2 points 11 months ago

Thanks. I am thinking about whether a self-hosted service is overkill for this, for my purposes. I kept my question broad in order to find out if most people just keep their snippets on their own PC or what.

I will check this out and I'm also looking at Snibox.

[–] mvirts@lemmy.world 7 points 11 months ago

I keep them in my head, with about 70% accuracy 😹

[–] Veraxus@kbin.social 6 points 11 months ago* (last edited 11 months ago)

Jetbrains IDEs have “Live Templates” that I use extensively.

For little notes and snippets (especially CLI snippets) I use an app called Stashpad, which I LOVE.

[–] Fades@lemmy.world 5 points 11 months ago

For more unique snippets I would ever use rarely I store em in GH gists

[–] shiveyarbles@beehaw.org 4 points 11 months ago

I have like a zillion notepad++ tabs. Every once in a while I'll go through the tabs to see if I want to save the snippets.

[–] m_r_butts@kbin.social 3 points 11 months ago (1 children)
[–] perishthethought@lemm.ee 1 points 11 months ago (1 children)

SNIPPETS code is tested with PC compilers from Microsoft, Borland, Watcom, and Symantec/Zortech, unless otherwise noted

Borland! There's a name I haven't heard in a long time...

[–] terrehbyte@ani.social 2 points 11 months ago

I've only used code snippets in VS Code which can store them in user settings for synchronization. They can also e stored in project settings, which can be optionally synchronized via source control.

I tend not to need them in larger projects where a lot of codegen is available or macros, so I haven't thought about a solution for things like VS or manual syncing.

[–] GammaGames@beehaw.org 2 points 11 months ago* (last edited 11 months ago) (1 children)

Vscode syncs them across all my computers (and even into browser sessions), so I use that.

If you’re meaning a place for code, I have a private scratchpad repo

[–] perishthethought@lemm.ee 1 points 11 months ago

I work in VSC most of the time too, so using its built-in user Snippets feature seems to make the most sense. How do you get it to sync across computers? (I can go look into that if it's a native feature)

[–] sbv@sh.itjust.works 2 points 11 months ago (1 children)

I don't have a library of snippets. Should I?

[–] perishthethought@lemm.ee 1 points 11 months ago

That's where I am now. I keep seeing snippets tools and so I asked here. Now that you've seen these replies, what do you think?

I assume the answer is very specific to the coding you do & your workflow. There's no single right answer.

[–] PoisonedPrisonPanda@discuss.tchncs.de 2 points 11 months ago (1 children)

My snippets are basically taken care of now by chatgpt.

[–] otl@lemmy.srcbeat.com 5 points 11 months ago (1 children)

I mean, I get it. But... damn.. can you imagine the relative computing power required to read a text file versus asking a LLM to generate that same text?

[–] PoisonedPrisonPanda@discuss.tchncs.de 3 points 11 months ago (1 children)

Ok.right in the feels.

To be honest, I try to search before on stackoverflow most of the time, due to the ability to write a few keywords and get a suitable answer versus formulate a prompt for the LLM.

But on the other side, llms are used for so much bullshit and invaluable prompts that my questions for helping me in my job has a more worthwile argument.

But of course it is a problematic topic related to llms.

[–] otl@lemmy.srcbeat.com 1 points 11 months ago

Haha no worries mate I totally get you. One of the best things about LLMs when I’ve played with them is it exercises my ability to write questions and requirements

[–] carl_dungeon@lemmy.world 1 points 11 months ago

I use https://znote.io, but there are other similar apps, not all free that do the same. Folders + tagging is super useful

[–] netchami@sh.itjust.works 1 points 11 months ago

Back when I used macOS, I liked an app called SnippetsLab. Nowadays, I just throw them in Emacs Org files. Emacs is actually very handy for this, you get syntax highlighting in the code block, you can execute the code right from inside your Emacs environment and there's even alpha support for lsp-mode inside of Org code blocks.

load more comments
view more: next ›