DEV Community

Sherry Day
Sherry Day

Posted on

How do you manage re-usable code snippets?

This thread asks which functions people keep around to copy into various projects.

But my question is... How do you manage this? Which programs do you use to manage your personally re-usable code snippets? Text editor? Note-taking app? Thanks!

Discussion (9)

Collapse
jeremyf profile image
Jeremy Friesen

I use org-roam paired with org-babel. Org-roam helps me tag and relate it. Org-babel means I have rich "backticks"; meaning the code is editable and runable.

Below is an example. The first two paragraphs are "prose" and the #+BEGIN_SRC line indicates that what follows is PlantUML code, which I can run from Emacs and will generate the file feed-strategy-erd.png.

Below is a rough sketch of the Entity Relationship Diagram I would use were we putting all of this in the database.

The goal of these conceptual tables is to provide a means to configure and generate SQL that calculates each article’s relevancy score based on the user’s preferences.  And to then return the most relevant articles for the user.

#+BEGIN_SRC plantuml :file feed-strategy-erd.png
  @startuml
  !theme amiga

  entity experiment {
      ,* id
      --
      ,* label
      ,* start date
      ,* end date
  }

  entity variant_experiment {
      ,* experiment_id
      ,* variant_id
      --
      ,* probability of using this variant

  }

  entity variant {
      ,* id
      --
      ,* label
      ,* order_by_lever_id
  }

  entity variant_relevancy_lever {
      ,* variant_id
      ,* relevancy_lever_id
      --
      ,* config (e.g. relevancy score range)
  }

  entity order_by_lever {
      ,* id
      --
      ,* order_by_fragment
  }

  entity relevancy_lever {
      ,* id
      --
      ,* label
      ,* user_required
      ,* select_fragment
      ,* joins_fragments
      ,* group_by_fragment
  }

  experiment ||--|{ variant_experiment
  variant ||--o{ variant_experiment
  relevancy_lever ||--o{ variant_relevancy_lever
  variant ||--o{ variant_relevancy_lever
  order_by_lever ||--o{ variant
  @enduml
#+END_SRC

#+RESULTS:
[[file:feed-strategy-erd.png]]
Enter fullscreen mode Exit fullscreen mode
Collapse
jeremyf profile image
Jeremy Friesen

The above is an example of code I don't often call but want to remember.

Otherwise, I use a snippet manager. For Emacs that's a mix of Yasnippets (for ye'old Textmate style snippets) and Tempel when I want more bare metal Lisp snippets.

Collapse
romatou profile image
Roma Tou

I use SnippetsLab on Mac. A great app that has the needed features (fragments, notes, language markup and highlight). 100% worth it.

Collapse
matthewbdaly profile image
Matthew Daly

I use a snippets manager in Neovim. Don't recall which one off the top of my head, but they're all very similar. I maintain a few of my own in a filetype plugin package I made for my own use which is available on GitHub.

That said, in the last few weeks I've been using Copilot and that's made a lot of those redundant since it can create a decent starting point for many use cases without having to actively store snippets yourself. It seems to learn what you use a lot too and suggest it when appropriate. It's not perfect and you can't just trust everything it suggests, but it's incredibly handy.

Collapse
cemkaanguru profile image
cem kaan kosali

I don't use any service or software anymore. Just use your IDE sync to collect all your snippets
I will share just two links.
code.visualstudio.com/docs/editor/...
code.visualstudio.com/docs/editor/...

Collapse
0xdivblo profile image
Valentin

I keep them into my notion dev wiki, ordered by language

Collapse
andrewbaisden profile image
Andrew Baisden

I use GitHub Gists gist.github.com/discover

Collapse
rxliuli profile image
rxliuli

If it's really repetitive, I'll use a snippet from vscode

Collapse
gbhorwood profile image
grant horwood

i have a sample project called 'bintracker'. i throw everything in there. it's also the reference point for onboarding new people.