<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Code Formatter &amp; Auto-Doc AI — Technical Tips</title>
    <link>https://jw-solutions.com/tools/code-formatter/</link>
    <description>Practical syntax guides, refactoring patterns and Auto-Doc AI workflows.</description>
    <language>pt-BR</language>
    <lastBuildDate>Sun, 15 Nov 2026 03:52:42 +0000</lastBuildDate>
    <image>
      <url>https://jw-solutions.com/assets/images/og/code-formatter-default.png</url>
      <title>Code Formatter &amp; Auto-Doc AI — Technical Tips</title>
      <link>https://jw-solutions.com/tools/code-formatter/</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://jw-solutions.com/tools/code-formatter/tips/feed.pt-BR.xml"/>
    <atom:link rel="alternate" type="application/rss+xml" hreflang="es" href="https://jw-solutions.com/tools/code-formatter/tips/feed.es.xml"/>
    <atom:link rel="alternate" type="application/rss+xml" hreflang="en" href="https://jw-solutions.com/tools/code-formatter/tips/feed.en.xml"/>
    <atom:link rel="alternate" type="application/rss+xml" hreflang="pt-BR" href="https://jw-solutions.com/tools/code-formatter/tips/feed.pt-BR.xml"/>
    <atom:link rel="alternate" type="application/rss+xml" hreflang="pt-PT" href="https://jw-solutions.com/tools/code-formatter/tips/feed.pt-PT.xml"/>
    <atom:link rel="alternate" type="application/rss+xml" hreflang="fr" href="https://jw-solutions.com/tools/code-formatter/tips/feed.fr.xml"/>
    <atom:link rel="alternate" type="application/rss+xml" hreflang="de" href="https://jw-solutions.com/tools/code-formatter/tips/feed.de.xml"/>
    <atom:link rel="alternate" type="application/rss+xml" hreflang="it" href="https://jw-solutions.com/tools/code-formatter/tips/feed.it.xml"/>
    <item>
      <title>Refatorando Tipos any Legados em TypeScript com Type Guards e TSDoc</title>
      <link>https://jw-solutions.com/tools/code-formatter/tips/javascript/typescript-refactoring-legacy-any-type-guards-tsdoc/pt-BR/</link>
      <guid isPermaLink="true">https://jw-solutions.com/tools/code-formatter/tips/javascript/typescript-refactoring-legacy-any-type-guards-tsdoc/pt-BR/</guid>
      <pubDate>Sat, 14 Nov 2026 14:00:00 +0000</pubDate>
      <category>TYPESCRIPT</category>
      <media:content url="https://jw-solutions.com/assets/images/og/tips/typescript-refactoring-legacy-any-type-guards-tsdoc-pt-BR.png" medium="image" />
      <description>Aprenda a remover tipos any de repositórios legados utilizando predicados de tipo estritos em TypeScript e documentação TSDoc para Auto-Doc AI.</description>
      <content:encoded><![CDATA[<p>Aprenda a remover tipos any de repositórios legados utilizando predicados de tipo estritos em TypeScript e documentação TSDoc para Auto-Doc AI.</p><pre><code>// ❌ Código legado inseguro usando tipo any
function processUserData(data: any) {
  console.log(&quot;User ID:&quot;, data.id);
  if (data.role === &quot;admin&quot;) {
    return data.permissions.includes(&quot;write&quot;);
  }
  return false;
}</code></pre><p><a href="https://jw-solutions.com/tools/code-formatter/tips/javascript/typescript-refactoring-legacy-any-type-guards-tsdoc/pt-BR/">Refatorando Tipos any Legados em TypeScript com Type Guards e TSDoc</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Refatoração em Java 21+: Records e Pattern Matching para Código Legível</title>
      <link>https://jw-solutions.com/tools/code-formatter/tips/java/java-21-pattern-matching-records-refactoring/pt-BR/</link>
      <guid isPermaLink="true">https://jw-solutions.com/tools/code-formatter/tips/java/java-21-pattern-matching-records-refactoring/pt-BR/</guid>
      <pubDate>Sat, 14 Nov 2026 14:00:00 +0000</pubDate>
      <category>JAVA</category>
      <media:content url="https://jw-solutions.com/assets/images/og/tips/java-21-pattern-matching-records-refactoring-pt-BR.png" medium="image" />
      <description>Descubra como transformar hierarquias de classes extensas em Records elegantes e Pattern Matching no Java 21, reduzindo drasticamente o código boilerplate.</description>
      <content:encoded><![CDATA[<p>Descubra como transformar hierarquias de classes extensas em Records elegantes e Pattern Matching no Java 21, reduzindo drasticamente o código boilerplate.</p><pre><code>// ANTES: Código legado verboso e sujeito a erros
public abstract class Response {
}

public class SuccessResponse extends Response {
    private final String data;
    public SuccessResponse(String data) { this.data = data; }
    public String getData() { return data; }
}

public class ErrorResponse extends Response {
    private final String errorCode;
    public ErrorResponse(String errorCode) { this.errorCode = errorCode; }
    public String getErrorCode() { return errorCode; }
}

public class ResponseProcessor {
    public static String process(Response response) {
        if (response instanceof SuccessResponse) {
            SuccessResponse success = (SuccessResponse) response;
            return &quot;OK: &quot; + success.getData();
        } else if (response instanceof ErrorResponse) {
            ErrorResponse error = (ErrorResponse) response;
            return &quot;FAIL: &quot; + error.getErrorCode();
        } else {
            throw new IllegalArgumentException(&quot;Unknown response type&quot;);
        }
    }
}</code></pre><p><a href="https://jw-solutions.com/tools/code-formatter/tips/java/java-21-pattern-matching-records-refactoring/pt-BR/">Refatoração em Java 21+: Records e Pattern Matching para Código Legível</a></p>]]></content:encoded>
    </item>
    <item>
      <title>C# 12 Moderno: Refatoração com Primary Constructors e XML Docs</title>
      <link>https://jw-solutions.com/tools/code-formatter/tips/csharp/csharp-12-primary-constructors-xml-doc-refactoring/pt-BR/</link>
      <guid isPermaLink="true">https://jw-solutions.com/tools/code-formatter/tips/csharp/csharp-12-primary-constructors-xml-doc-refactoring/pt-BR/</guid>
      <pubDate>Sat, 14 Nov 2026 14:00:00 +0000</pubDate>
      <category>CSHARP</category>
      <media:content url="https://jw-solutions.com/assets/images/og/tips/csharp-12-primary-constructors-xml-doc-refactoring-pt-BR.png" medium="image" />
      <description>Descubra como simplificar a injeção de dependências no C# 12 utilizando Primary Constructors com documentação XML estruturada.</description>
      <content:encoded><![CDATA[<p>Descubra como simplificar a injeção de dependências no C# 12 utilizando Primary Constructors com documentação XML estruturada.</p><pre><code>namespace JWDocs.Services;

/// &lt;summary&gt;
/// Serviço responsável pelo processamento de pagamentos.
/// &lt;/summary&gt;
public class PaymentProcessor
{
    private readonly IPaymentGateway _gateway;
    private readonly ILogger _logger;

    /// &lt;summary&gt;
    /// Inicializa uma nova instância de &lt;see cref=&quot;PaymentProcessor&quot;/&gt;.
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;gateway&quot;&gt;O provedor de pagamentos principal.&lt;/param&gt;
    /// &lt;param name=&quot;logger&quot;&gt;O serviço de log de auditoria.&lt;/param&gt;
    public PaymentProcessor(IPaymentGateway gateway, ILogger logger)
    {
        _gateway = gateway ?? throw new ArgumentNullException(nameof(gateway));
        _logger = logger ?? throw new ArgumentNullException(nameof(logger));
    }

    public async Task ProcessAsync(decimal amount)
    {
        _logger.LogInfo(&quot;Iniciando pagamento...&quot;);
        await _gateway.ChargeAsync(amount);
    }
}</code></pre><p><a href="https://jw-solutions.com/tools/code-formatter/tips/csharp/csharp-12-primary-constructors-xml-doc-refactoring/pt-BR/">C# 12 Moderno: Refatoração com Primary Constructors e XML Docs</a></p>]]></content:encoded>
    </item>
    <item>
      <title>TypeScript moderno: ?., ?? e satisfies sem erros de formatação</title>
      <link>https://jw-solutions.com/tools/code-formatter/tips/javascript/typescript-modern-operators/pt-BR/</link>
      <guid isPermaLink="true">https://jw-solutions.com/tools/code-formatter/tips/javascript/typescript-modern-operators/pt-BR/</guid>
      <pubDate>Mon, 02 Nov 2026 14:00:00 +0000</pubDate>
      <category>JAVASCRIPT</category>
      <media:content url="https://jw-solutions.com/assets/images/og/tips/typescript-modern-operators-pt-BR.png" medium="image" />
      <description>TypeScript moderno: ?., ?? e satisfies sem erros de formatação</description>
      <content:encoded><![CDATA[<p>TypeScript moderno: ?., ?? e satisfies sem erros de formatação</p><pre><code>const config = {
  retries: 3,
  endpoint: &quot;https://api.example.com&quot;,
} satisfies Record&lt;string, string | number&gt;;

const timeout = options?.timeout ?? 5000;
const city = user?.address?.city ?? &quot;Sin ciudad&quot;;</code></pre><p><a href="https://jw-solutions.com/tools/code-formatter/tips/javascript/typescript-modern-operators/pt-BR/">TypeScript moderno: ?., ?? e satisfies sem erros de formatação</a></p>]]></content:encoded>
    </item>
    <item>
      <title>SQL e DAX: três hábitos para consultas rápidas e legíveis</title>
      <link>https://jw-solutions.com/tools/code-formatter/tips/sql-dax/sql-dax-optimization-basics/pt-BR/</link>
      <guid isPermaLink="true">https://jw-solutions.com/tools/code-formatter/tips/sql-dax/sql-dax-optimization-basics/pt-BR/</guid>
      <pubDate>Mon, 02 Nov 2026 14:00:00 +0000</pubDate>
      <category>SQL</category>
      <media:content url="https://jw-solutions.com/assets/images/og/tips/sql-dax-optimization-basics-pt-BR.png" medium="image" />
      <description>SQL e DAX: três hábitos para consultas rápidas e legíveis</description>
      <content:encoded><![CDATA[<p>SQL e DAX: três hábitos para consultas rápidas e legíveis</p><pre><code>SELECT o.id, o.total, c.name
FROM orders AS o
JOIN customers AS c ON c.id = o.customer_id
WHERE o.created_at &gt;= DATE &#x27;2026-01-01&#x27;
ORDER BY o.total DESC;</code></pre><p><a href="https://jw-solutions.com/tools/code-formatter/tips/sql-dax/sql-dax-optimization-basics/pt-BR/">SQL e DAX: três hábitos para consultas rápidas e legíveis</a></p>]]></content:encoded>
    </item>
    <item>
      <title>PEP 8 no Python 3.12: como escrever blocos match/case legíveis</title>
      <link>https://jw-solutions.com/tools/code-formatter/tips/python/python-312-pep8-tips/pt-BR/</link>
      <guid isPermaLink="true">https://jw-solutions.com/tools/code-formatter/tips/python/python-312-pep8-tips/pt-BR/</guid>
      <pubDate>Mon, 02 Nov 2026 14:00:00 +0000</pubDate>
      <category>PYTHON</category>
      <media:content url="https://jw-solutions.com/assets/images/og/tips/python-312-pep8-tips-pt-BR.png" medium="image" />
      <description>PEP 8 no Python 3.12: como escrever blocos match/case legíveis</description>
      <content:encoded><![CDATA[<p>PEP 8 no Python 3.12: como escrever blocos match/case legíveis</p><pre><code>match command.split():
    case [&quot;go&quot;, direction] if direction in {&quot;north&quot;, &quot;south&quot;}:
        move(direction)
    case [&quot;quit&quot; | &quot;exit&quot;]:
        shutdown()
    case _:
        print(&quot;Comando desconocido&quot;)</code></pre><p><a href="https://jw-solutions.com/tools/code-formatter/tips/python/python-312-pep8-tips/pt-BR/">PEP 8 no Python 3.12: como escrever blocos match/case legíveis</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>
