<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Karina Pereira</title>
    <description>The latest articles on DEV Community by Karina Pereira (@kapcruz).</description>
    <link>https://dev.to/kapcruz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2311559%2Fabc7ef89-3bcb-439e-adb0-adf3afa9c42f.jpg</url>
      <title>DEV Community: Karina Pereira</title>
      <link>https://dev.to/kapcruz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kapcruz"/>
    <language>en</language>
    <item>
      <title>What I learned while putting together my IDP (Individual Development Plan)</title>
      <dc:creator>Karina Pereira</dc:creator>
      <pubDate>Thu, 18 Dec 2025 10:38:04 +0000</pubDate>
      <link>https://dev.to/allmightenglishtech/what-i-learned-while-putting-together-my-idp-individual-development-plan-3i2o</link>
      <guid>https://dev.to/allmightenglishtech/what-i-learned-while-putting-together-my-idp-individual-development-plan-3i2o</guid>
      <description>&lt;p&gt;When I saw for the first time the acronym IDP (Individual Development Plan), I didn’t know what it was or how to create one. In the talk with my Tech Leader, we agreed that a topic could involve areas for improvement that I myself identified. However, Looking at my list of knowledge that I wanted to develop, I felt lost where to start and which area I should focus on first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Definition
&lt;/h2&gt;

&lt;p&gt;Based on these reflection, I defined my initial objectives:&lt;/p&gt;

&lt;p&gt;1 - To improve my technical skills&lt;/p&gt;

&lt;p&gt;2 - To document the entire project in English&lt;/p&gt;

&lt;p&gt;Defining the subject wasn’t simple, because I tried not only considering my development, but how the IDP could add value to the company. It would be something useful, something I could apply in my daily life, and something that would help me making more informed architectural decisions in the future.&lt;/p&gt;

&lt;p&gt;I thought: working as Full-Stack is impossible to know everything, but dominating principles of architecture makes all the difference, independently of the technology stack used.&lt;/p&gt;

&lt;p&gt;So, I chose to study and apply SOLID (Single Responsibility, Open–Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion principles) in practice.&lt;/p&gt;

&lt;p&gt;Based on these motivations I identified one more objective:&lt;/p&gt;

&lt;p&gt;3 - To be a developer capable of applying best practices from the idealization step of a project.&lt;/p&gt;

&lt;p&gt;My main motivation for choosing this subject came from my own experience. Many projects that I worked, I didn't have a mentor and learned by making mistakes, delivering the best I could in the shortest time possible.&lt;/p&gt;

&lt;p&gt;Understanding SOLID better, would help me developing more organized and scalable systems, this directly impacts the quality of my work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Planning
&lt;/h2&gt;

&lt;p&gt;I organized a list of stacks and practices that I would love to apply:&lt;/p&gt;

&lt;p&gt;1 - Laravel, using Eloquent, which is already part of my routine. To focus only on the concept and architecture rather than reinventing already established functionalities.&lt;br&gt;
2 - Vue.js with Composition API &lt;br&gt;
3 - ESLint and Prettier, ensuring that the code follows the standards without triggering errors in the IDE extensions.&lt;br&gt;
4 - I was unsure whether to use Service Layer or Repository Pattern, I chose Service Layer, better explained in the details below.&lt;/p&gt;

&lt;p&gt;Not everything I defined at the beginning was delivered, such as authentication, CORS (Cross-Origin Resource Sharing), deployment, and git hooks. I plan to do this level of implementation at another time. I focused only on best practices and architecture.&lt;/p&gt;

&lt;p&gt;With that, I had the subject of the project: A map of urban legends, where I apply best practices, refine my skills in Laravel and Vue.js, and learn more about SOLID principles.&lt;/p&gt;
&lt;h2&gt;
  
  
  Practice
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Why the Composition API?
&lt;/h3&gt;

&lt;p&gt;I started with Vue.js using the Options API, but in some projects, I realized that the complexity grew along with the file size. I started working with the Composition API on ongoing projects and really enjoyed the experience, as it facilitates reusage and organization.&lt;/p&gt;

&lt;p&gt;Applying SOLID principles to the front-end isn't so obvious, but I focused on separating responsibilities and making the code reusable.&lt;/p&gt;
&lt;h3&gt;
  
  
  I understood that the components should only handle UI
&lt;/h3&gt;

&lt;p&gt;I created a &lt;code&gt;src/api/&lt;/code&gt; folder containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;connect.js&lt;/code&gt; → responsible for configuring the connection to the API&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;legend.js&lt;/code&gt; → responsible for querying the API endpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each file has a single responsibility.&lt;/p&gt;

&lt;p&gt;The components do not depend on Axios, but only on the functions implemented inside &lt;code&gt;legend.js&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For example, if I replace Axios for GraphQL, nothing in the component needs to be changed.&lt;/p&gt;

&lt;p&gt;With this structure, the &lt;code&gt;UrbanLegendMap.vue&lt;/code&gt; component only needs to handle UI (Leaflet), only consumes domain functions, and does not load HTTP logic inside of it.&lt;/p&gt;
&lt;h3&gt;
  
  
  Why the Service Layer?
&lt;/h3&gt;

&lt;p&gt;In projects, it's very difficult to change the ORM, so implementing the Repository Pattern would only add an unnecessary layer and reproduce old habits. I understood that Repositories would perform a role that Eloquent already does. There would be no gain.&lt;/p&gt;

&lt;p&gt;Therefore, the Service Layer makes business decisions, handles approaches, and deals with any reusable logic, becoming responsible for the business rules.&lt;/p&gt;
&lt;h3&gt;
  
  
  I understood that each class only needs one reason to be changed
&lt;/h3&gt;

&lt;p&gt;The controller of the project was only responsible for receiving the request, calling the service interface, and returning an HTTP response, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;store&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;StoreUrbanLegendRequest&lt;/span&gt; &lt;span class="nx"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;$legend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;service&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;validated&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;UrbanLegendResource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$legend&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;response&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setStatusCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nx"&gt;HTTP_CREATED&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No validation logic or business rules should exist in the Controller.&lt;/p&gt;

&lt;p&gt;Inside the project, each time a new legend is created, a slug is generated to be accessed via URL.&lt;/p&gt;

&lt;p&gt;This responsibility was assigned to the Model.&lt;/p&gt;

&lt;p&gt;Therefore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validations are handled by Form Requests.&lt;/li&gt;
&lt;li&gt;Business rules are handled by the Service.&lt;/li&gt;
&lt;li&gt;Slug generation, UUIDs, and relationships are handled by the Model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This kept each part of the system with well-defined responsibilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  I understood that a structure doesn't need to be altered, but it should always be open for extension.
&lt;/h3&gt;

&lt;p&gt;The controller only knows the service's interface, it doesn't depend on the service's implementation. If it's necessary to migrate the service's implementation to an external API, for example, then you just need to create another service that implements the same interface.&lt;/p&gt;

&lt;p&gt;Nothing in the controller needs to change, and the service and controller depend on the same logical interface.&lt;/p&gt;

&lt;h3&gt;
  
  
  I understood that testing features can be beneficial
&lt;/h3&gt;

&lt;p&gt;I usually only test the service or use the case of the application, but since I was dealing with a very well-structured project, I opted to create tests in two ways: feature tests and unit tests.&lt;/p&gt;

&lt;p&gt;With feature tests, I can test the complete flow: route + middleware + request + service + model + resource, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;test_validates_required_fields_and_returns_422&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;User&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;factory&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="nx"&gt;$res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;withHeaders&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bearer &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;postJson&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/api/legend&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="p"&gt;]));&lt;/span&gt;

        &lt;span class="nx"&gt;$res&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;assertStatus&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;422&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;assertJsonValidationErrors&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This doesn't mean I'll always test features, but since my front-end depends exclusively on the external API, I thought it was important to have this test to verify if the response was in accordance with HTTP principles, and it also helped me writing the documentation.&lt;/p&gt;

&lt;p&gt;Unit tests validated the business rule in isolation, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;test_list_returns_filtered_legends&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;service&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lenda - Brasília&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;city&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;  &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Brasília&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;]));&lt;/span&gt;

    &lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;service&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lenda - Florianópolis&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;city&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;  &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Florianópolis&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;]));&lt;/span&gt;

    &lt;span class="nx"&gt;$results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;service&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;city&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Brasília&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

    &lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;assertCount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$results&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;assertEquals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Brasília&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$results&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  I understood that this IDP changed my way of thinking
&lt;/h3&gt;

&lt;p&gt;Throughout this IDP, my first and main objective was to improve my technical knowledge. I sought to understand each step and each implementation and to understand the reasoning behind each line. I consulted many articles to understand not only the theory but also to have practical examples.&lt;/p&gt;

&lt;p&gt;By creating a project applying SOLID principles in practice, I understood that each architectural decision impacts the rest of the system. It's much better to have code that does what it's supposed to with an easily maintainable architecture.&lt;/p&gt;

&lt;p&gt;This study wasn't just technical; it also changed my way of thinking. Currently, before writing code, I reflect on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who is responsible for this?&lt;/li&gt;
&lt;li&gt;Does this class have a single reason to change?&lt;/li&gt;
&lt;li&gt;Are there any unnecessary methods or functions?&lt;/li&gt;
&lt;li&gt;Can it be extended without breaking?&lt;/li&gt;
&lt;li&gt;Will I have a headache if I need to perform maintenance?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions have become part of my daily routine. That's exactly what I was looking for when I chose SOLID as my main topic: to learn something that wasn't just applicable to the IDP, but that could accompany my professional life from now on.&lt;/p&gt;

&lt;p&gt;Although not all planned items were completed (authentication), I consider the IDP successful. The process brought me technical maturity and a much more solid understanding of how to structure a project, from idealization onwards, because I didn't just learn a technology, but I learned to think about architecture intentionally.&lt;/p&gt;

&lt;h2&gt;
  
  
  I learned that good practices don't depend on the stack, but on conscious decisions
&lt;/h2&gt;

&lt;p&gt;And this evolution doesn't end here.&lt;/p&gt;

&lt;p&gt;Link of project: &lt;a href="https://github.com/kapcruz/urbanlegendmaps" rel="noopener noreferrer"&gt;https://github.com/kapcruz/urbanlegendmaps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Referencies:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/danielhe4rt/SOLID4Noobs" rel="noopener noreferrer"&gt;SOLID4Noobs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/desenvolvendo-com-paixao/o-que-%C3%A9-solid-o-guia-completo-para-voc%C3%AA-entender-os-5-princ%C3%ADpios-da-poo-2b937b3fc530" rel="noopener noreferrer"&gt;O que é SOLID: O guia completo para você entender os 5 princípios da POO&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@sliusarchyn/service-layer-in-laravel-use-it-ae861fb0f124" rel="noopener noreferrer"&gt;Service Layer in Laravel — use it!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/azagniotov/a4b16faf0febd12efbc6c3d7370383a6" rel="noopener noreferrer"&gt;Create beautiful REST API docs authored in Markdown&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>devjournal</category>
      <category>learning</category>
    </item>
    <item>
      <title>Regex in VSCode: My favorite hacks</title>
      <dc:creator>Karina Pereira</dc:creator>
      <pubDate>Fri, 29 Nov 2024 04:00:06 +0000</pubDate>
      <link>https://dev.to/allmightenglishtech/regex-in-vscode-my-favorite-hacks-2ea6</link>
      <guid>https://dev.to/allmightenglishtech/regex-in-vscode-my-favorite-hacks-2ea6</guid>
      <description>&lt;p&gt;Recently, I needed to implement a gradual feature rollout. I had a spreadsheet with a list of 300 company IDs in the first column, which would be part of this phased release. &lt;/p&gt;

&lt;p&gt;My task was to take each ID individually and insert it into an update query to execute directly in the database.&lt;/p&gt;

&lt;p&gt;At first, I considered multiple different methods to make it. Then I remembered of VSCode combination with Regular Expressions, a technique I had heard about but never actually tried. This situation was the perfect opportunity to test it out.&lt;/p&gt;

&lt;p&gt;My idea with this article is to show you how combining VSCode with regular expressions can assist you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reasons To Use
&lt;/h3&gt;

&lt;p&gt;One of the most common uses is finding and replacing text, removing duplicates, and making adjustments across multiple files. You can see other applications in the following documentation: &lt;a href="https://learn.microsoft.com/en-us/visualstudio/ide/using-regular-expressions-in-visual-studio?view=vs-2022" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/visualstudio/ide/using-regular-expressions-in-visual-studio?view=vs-2022&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I will focus on the methods I have used that have helped me.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to use?
&lt;/h3&gt;

&lt;p&gt;To Enable the regular expressions in the function finding, press:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Command + F (MacOS) or Ctrl + F (Windows, Linux)&lt;/li&gt;
&lt;li&gt;Option + Command + F (⌥⌘F) or Ctrl + H (Windows, Linux)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This command will open the dialog box with &lt;strong&gt;Toggle Replace&lt;/strong&gt; enabled:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fenoyw6emw8ssdrsfeyl8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fenoyw6emw8ssdrsfeyl8.png" alt="image dialog box" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After this, you can check the option to "Use the Regular Expression”, usually represented by a &lt;strong&gt;.&lt;/strong&gt;* icon, with the command:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Option + Command + R (⌥⌘R) or Alt+E (Windows, Linux)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7ufdrisrhzgy2sbuyvn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7ufdrisrhzgy2sbuyvn.png" alt="image icon" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Favorite Cheats
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Find and Replace
&lt;/h4&gt;

&lt;p&gt;My first favorite cheats is to separate numbers with commas and quotes:&lt;/p&gt;

&lt;p&gt;Search: &lt;code&gt;(\d+)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Replace: &lt;code&gt;"$1”,&lt;/code&gt; (or no quotes &lt;code&gt;$1,&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;This will wrap the number in quotes and add a comma after it.&lt;/p&gt;

&lt;h4&gt;
  
  
  Transform multiples line into one:
&lt;/h4&gt;

&lt;p&gt;Search: &lt;code&gt;\n&lt;/code&gt;&lt;br&gt;
Replace: Use a space or nothing (depending on your preference).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj2ut2w0svvqhxsstx70.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj2ut2w0svvqhxsstx70.gif" alt="first cheat" width="480" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Comment specific search across multiple files
&lt;/h4&gt;

&lt;p&gt;Replace: &lt;code&gt;// $0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5b7rmrqrdlhaox2fpgc1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5b7rmrqrdlhaox2fpgc1.gif" alt="image specific search" width="480" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Find instances for classes
&lt;/h4&gt;

&lt;p&gt;To find instances where a class is being instantiated, use the following pattern:&lt;/p&gt;

&lt;p&gt;Search: &lt;code&gt;new\s+User\s*\(&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8udx69an3bs139f18wt.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8udx69an3bs139f18wt.gif" alt="find instance" width="480" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  How did I find these regular expressions?
&lt;/h5&gt;

&lt;p&gt;I usually search for them after testing on regex101.com or by Googling examples.&lt;br&gt;
Try exploring and adapting these techniques to your workflow.&lt;/p&gt;

&lt;p&gt;Regex can work like magic!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
