Programador Profissional
Grátis!
With Membership
$9.00
Valor Sugerido

Programador Profissional

Técnicas e Práticas de Codificação

Sobre o Livro

Programador Profissional

Técnicas e Práticas de Programação

Se eu fosse resumir o objetivo deste livro em uma linha ela seria

`` Como construir software de qualidade dando atenção especial ao código-fonte. ``

Aprendizes e iniciantes na área da programação, ou desenvolvimento de software, como preferir, podem usar este livro como referência para o exercício da profissão.

Nesta obra há uma compilação de conhecimentos e habilidades necessárias para te ajudar a fazer boas decisões quando estás programando. O livro todo é sobre programar melhor.

Contudo, é importante dizer que de jeito nenhum se pretende esgotar o tema. Grande parte das ideias presentes aqui não vieram totalmente da minha cabeça. Ao contrário, as ideias são baseadas em grandes obras, as referências na área, escritas por excelentes profissionais, como Martin Fowler, Kent Beck, Joshua Bloch, entre outros.

Abordagem

Tenha em mente que este livro foi escrito a partir de notas de aula usadas no ensino de tópicos avançados de programação, tais como: técnicas, princípios e padrões de projeto de softwares, práticas específicas, etc. Esta origem deu ao livro as seguintes características:

  • Dedicado ao ensino: foi projetado para ser didático, "digerível", simples -- mesmo que explique conceitos complexos;
  • Focado na prática: foi pensando para o exercício do ofício, para trabalhar mesmo, e por isso é povoado de estudos de caso, exemplos e muitos códigos;
  • No nosso idioma e cultura: não foi escrito para ser uma obra erudita e sim para ser simples de ler, acessível às pessoas que falam e/ou entendem português -- com um leve sotaque gaúcho;

Códigos dos exemplos

A maior parte dos códigos está disponível na linguagem de programação Java. Ela é a linguagem mais usada na grande maioria dos livros de técnicas, práticas e padrões, isto é, sempre que a linguagem não é o foco do livro. Java também é bastante usada pelas faculdades e escolas técnicas, dado o suporte avançado aos conceitos de programação orientada a objetos e alinhamento com linguagens de modelagem visual, como a UML.

De fato, 97.312% do conteúdo deste livro é implementável em qualquer linguagem de programação, com poucos ajustes. O foco nunca é a linguagem, senão as técnicas! Para complementar, sempre que cabível, existem códigos de exemplo em outras linguagens como: C, PHP, Ruby, etc.

Organização dos capítulos

O livro está organizado tanto para cobrir a escrita de códigos novos como também a reescrita (refatoração) de códigos existentes. Portanto, resulta nos seguintes capítulos:

  • Capítulo 000 – O Programador Profissional: oferece uma introdução ao tema central deste livro: códigos.
  • Capítulo 001 – Boas Práticas de Codificação: apresenta as melhores práticas usadas pelos profissionais para escrever códigos de alta qualidade técnica.
  • Capítulo 010 - Técnicas Avançadas de Codificação: mostra as técnicas aplicadas por programadores experientes para escrever códigos sofisticados e elegantes.
  • Capítulo 011 - Melhorando Códigos Existentes: apresenta técnicas e práticas usadas para melhorar uma lógica e códigos que já existem (o famoso código legado).
  • Capítulo 100 - Cenas dos Próximos Capítulos: faz uma análise do que foi visto e traz um resumo do que ficou para próximas publicações.

Para quem é este livro

Este é um livro destinado à Educação Profissional. Foi testado em sala de aula e usado nas disciplinas de Aspectos Avançados de Programação, Arquitetura e Projeto de Software e Tópicos Avançados, nos cursos de Análise e Desenvolvimento de Sistemas e Técnico em Informática para Internet, ambos do Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul (IFRS).

É uma obra útil para estudantes que já passaram pelas disciplinas iniciais de seus cursos (como Lógica ou Introdução à Programação e Programação Orientada a Objetos) e que pretendem escrever códigos profissionalmente, para ingressar e obter êxito no mundo de trabalho.

Também pode atender programadores formados e mesmo aqueles que nunca fizeram um curso, mas que já trabalham na área e buscam um material técnico especializado que vá além do básico, com uma abordagem direta e aplicação prática.

Líderes Técnicos ou Gerentes de Projeto podem usar este livro para treinar suas equipes. Programadores experientes podem achar os tópicos muito básicos, afinal já passaram pelas armadilhas e intempéries que motivam estas práticas, isto é, já são profissionais. Talvez, ainda possam encontrar algumas coisinhas interessantes.

Academicamente, este livro é adequado ao ensino em cursos voltados para a Educação Profissional, Técnica e Tecnológica, tais como: Técnico em Informática, Técnico em Informática para Internet, Tecnologia em Análise e Desenvolvimento de Sistemas, Tecnologia em Sistemas para Internet, além de cursos de formação inicial e continuada na área de desenvolvimento de sistemas.

Para quem não é este livro

Não cobre construções básicas de programas. O livro não tem o objetivo de ensinar a programar do zero. Ao contrário, é um livro para ensinar a programar melhor. Se não sabes programar, se não passaste por uma disciplina introdutória à programação, é bem provável que não seja muito útil.

Não é sobre algoritmos e estruturas de dados. Embora algumas técnicas sejam relacionadas à performance, o livro não aborda técnicas de escrita de algoritmos para obter eficiência computacional.

Não é teórico. Não espere deste livro uma abordagem teórica. Ele foi escrito por um praticante para praticantes.

Sobre o Autor

Márcio Torres
Márcio Torres

Atualmente sou Professor no IFRS, atuo no curso Técnico em Informática para Internet e no curso superior em Tecnologia em Analise e Desenvolvimento de Sistemas.


Meus alunos perguntam: "professor, tu trabalha ou só dá aula?"


É a vida de quem ensina, ter que ouvir isso ?‍♂️. Enfim, **trabalho** em sala de aula, sou um educador, e ainda participo de projetos internos e dou uns _pitacos_ em sistemas alheios (atividade conhecida como consultoria :).


Anterior a isto, tenho uma história longa. Eu passei por vários marcos na linha do tempo da evolução da computação (é, eu sou velho). Para me conheceres melhor vou contar um pouco dessa história a seguir:


Eu nasci a dez mil anos atrás. Comecei programando na linguagem Basic, num CP500 da prológica. Não havia Internet naquela época. Se aprendia lendo revistas técnicas, transcrevendo códigos e fazendo experiências de tentativa-e-erro. Mais tarde comecei a desenvolver em dBase e depois Clipper, ambos sobre a plataforma MS-DOS. Joguei Prince of Persia, Wolfenstein e o primeiro DOOM - tinha que usar o DOS/4GW para liberar a memória estendida (mais que os 640KB usuais). Já montei meu próprio computador -- quando ainda tinha que selecionar IRQ através de jumpers ou switches. Vivenciei a ascensão da interface gráfica - que bom, pois não aguentava mais ver caracteres em fósforo verde. Instalei o Windows 95 - trocando malditos 13 disquetes um-a-um. Meu computador tinha um Kit Multimídia da Creative - e uma placa de vídeo Voodoo. Migrei meus sistemas de Clipper para Visual Basic e mais tarde Delphi. Usei a Internet quando só existia HTML e "meia dúzia" de tags - sem CSS ou JavaScript. Acompanhei a ascensão da Internet e da Web. Presenciei o início do Linux, sua evolução e sua importância para a consolidação dos sistemas online - junto com Perl, Apache, MySQL, PHP e outras várias tecnologias e ferramentas pioneiras. Já instalei o Conectiva Linux e então conheci o que é uma linha de comando de verdade. Comecei a programar em Java a partir da versão 1.3 e Java Enteprise (EE) a partir do 1.4. Ainda lembro como sofri para entender o que era Orientação a Objetos - velhos hábitos procedurais são difíceis de perder. Acompanhei a Googlificação e o crescimento do comércio eletrônico - e também o estouro da bolha da Internet.


Não tenho dúvidas que sou um programador que ensina ao mesmo tempo que um professor que programa.

Sumário

  • Prefácio
  • Introdução
    • Abordagem
    • Códigos dos exemplos
    • Organização dos capítulos
    • Para quem é este livro
    • Para quem não é este livro
    • Convenções
    • Sobre mim
  • Capítulo 000 – O Programador Profissional
    • De amador a profissional
    • Sobre o livro
    • Existem diferenças entre programador e desenvolvedor?
    • O preço do amanhã está na habilidade de projetar
    • A palavra de ordem é DI-VI-DIR
    • O impacto na Qualidade de Software
    • Pedaços de mau código
    • Técnicas, Práticas, Princípios, Padrões e Bruxarias
    • Existe uma diferença entre conhecer o caminho e percorrer o caminho …
    • O que vem a seguir
  • Capítulo 001 – Boas Práticas de Programação
    • A importância da aderência aos estilos e convenções de código
    • O nome é importante
    • Diferenças devem ser bem visíveis e as semelhanças agrupadas criteriosamente
    • Os nomes devem ser pronunciáveis
    • Substantivos como nomes de classes e verbos como nomes de métodos
    • Inglês, Português ou русский язык
    • Classes e métodos pequenos
    • Um problema de cada vez, pequeno gafanhoto
    • Poucos parâmetros, menos é mais nesse caso
    • Projete para que NULL não seja passado como parâmetro
    • Projete para evitar flags como parâmetros
    • Não introduzirás comentários inúteis
    • Práticas para tornar os comentários obsoletos
    • Não comente o óbvio
    • Use o teu talento de escritor para escrever a documentação em vez de simplesmente adicionar comentários
    • Considerações sobre boas práticas
  • Capítulo 010 – Técnicas de Codificação
    • Encadeamento de construtores (constructor chaining)
    • Interface fluente (fluent interface)
    • Funções variádicas (varargs)
    • Iteradores e iterabilidade
    • Geradores (generators)
    • Melhor pedir perdão do que permissão
    • Olhe antes de pular
    • Métodos fábrica estáticos
    • Relançamento de exceção
    • Concatenação de strings com builders e appenders
    • Comparação na mão-esquerda
    • Retorno cedo!
    • Retorno booleano
    • Valor padrão e opcionalidade de parâmetros
    • Ordenar expressões condicionais do menor ao maior custo
    • Considerações sobre técnicas
  • Capítulo 011 – Melhorando Códigos Existentes
    • Definindo Refatoração
    • Por que refatorar?
    • Maus cheiros no código
    • Smell: código duplicado
    • Smell: classes e método muito longos
    • Smell: excesso de parâmetros
    • Smell: grupos de dados
    • Smell: obsessão primitiva
    • Smell: comentários (também conhecidos como “desodorante”)
    • Smell: números (e strings) mágicos
    • Refatorações Comuns
    • Refatoração: renomear
    • Refatoração: extrair (introduzir) classe
    • Refatoração: extrair (introduzir) superclasse
    • Refatoração: extrair (introduzir) método
    • Refatoração: introduzir variável explicativa
    • Refatoração: introduzir método consulta
    • Refatoração: inverter condicional
    • Refatoração: introduzir constante
    • Refatoração: introduzir objeto parâmetro
    • Considerações sobre melhoria de código existente
  • Capítulo 100 – Cenas dos próximos volumes
  • Notes

A garantia Leanpub incondicional, sem riscos, de 100% de satisfação

Durante 60 dias da data de compra você pode solicitar o reembolso total de qualquer compra Leanpub, em dois cliques. Nós processamos os reembolsos manualmente, então eles podem demorar alguns dias para aparecer. Veja os termos completos.

80% Royalties. Earn $16 on a $20 book.

We pay 80% royalties. That's not a typo: you earn $16 on a $20 sale. If we sell 5000 non-refunded copies of your book or course for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earnedover $13 millionwriting, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Atualizações grauitas. Sem DRM.

Se você compra um livro da Leanpub, você recebe atualizações gratuitas enquanto o autor atualizar o livro! Muitos autores utilizam a Leanpub para publicar os seus livros em andamento, enquanto eles estão os escrevendo. Todos os leitores recebem atualizações gratuitas, não importa quando ou por quanto eles compraram o livro (até mesmo de graça).

A maioria dos livros Leanpub estão disponíveis em PDF (para computadores) e EPUB (para telefones, tablets, e Kindle). Os formatos que um livro inclui são exibidos no top direito dessa página.

Por último, livros Leapub não têm nenhuma proteção anti-cópias DRM sem sentido, então você pode facilmente lê-los em qualquer dispositivo suportado.

Aprenda mais sobre os formatos de ebook da Leanpub e aonde lê-los

Escreva e Publique na Leanpub

Autores e editoras usam a Leanpub para publicar incríveis livros em andamento e completos como esse aqui. Você pode usar a Leanpub para escrever, publicar e vender o seu livro também! A Leanpub é uma plataforma poderosa para autores sérios, combinando fluxos de trabalho simples e elegantes para escrita e publicação, com uma loja focada em vender livros em andamento. A Leanpub é uma máquina de escrever mágica para autores: simplesmente escreva em texto simples e, para publicar o seu ebook, apenas aperte um botão. É realmente fácil assim.

Aprenda sobre como escrever na Leanpub