15 repositorios
Practices for eliminating redundant logic and dead code through abstraction and consolidation.
Distinct from Coding: Existing candidates focus on automated dead code elimination (tree-shaking) rather than architectural abstraction to remove duplication.
Explore 15 awesome GitHub repositories matching software engineering & architecture · Code Duplication Reduction. Refine with filters or upvote what's useful.
This project is a PHP clean code guide and software architecture reference. It provides a set of standards, naming conventions, and design patterns intended to improve the long-term maintainability and readability of PHP codebases. The guide emphasizes a structured approach to refactoring and system design, focusing on the application of SOLID principles to reduce coupling and increase extensibility. It advocates for object-oriented design through the use of composition over inheritance, the use of final classes to prevent unexpected overrides, and the implementation of strict type declaratio
Provides strategies for removing redundant logic and dead code by creating abstractions that consolidate repetitive patterns.
This project is a comprehensive guide to architectural standards and coding patterns for developing maintainable applications within the Laravel framework. It focuses on clean code standards, applying the single responsibility and DRY principles to ensure codebase predictability and consistency. The guide emphasizes decoupling components by moving business logic into service layers and shifting input validation into dedicated request classes to keep controllers lean. It advocates for the use of a service container and dependency injection to reduce class coupling and improve testability. The
Applies practices to eliminate redundant logic using shared components like query scopes and templates.
This project is a collection of software engineering principles and architectural design patterns designed to minimize the mental effort required to understand and maintain source code. It serves as a guide for implementing clean code methodologies and architectural simplification to reduce the overall cognitive load on developers. The framework emphasizes aligning module boundaries and ubiquitous language with business stakeholders to prevent architectural ripple effects. It advocates for balancing service granularity to avoid the overhead of distributed monoliths and suggests favoring objec
Provides guidance on balancing the cost of abstraction against the risk of tight coupling.
This project is a set of software engineering standards and architectural patterns for writing maintainable and refactorable TypeScript code. It provides a comprehensive guide for implementing clean code principles, focusing on the application of SOLID design and structural patterns to build decoupled systems. The framework prioritizes composition over inheritance and utilizes dependency inversion to reduce system coupling. It establishes standards for strict static typing and the use of read-only modifiers to ensure type safety and eliminate runtime errors. The guidance covers a broad range
Provides practices for eliminating redundant logic and dead code through the use of architectural abstractions.
100 Go Mistakes is a reference book and code review companion that catalogues frequent Go programming anti-patterns and provides corrected implementations for each one. It covers a wide range of common pitfalls, from range loop variable capture and interface nil handling to error wrapping and map iteration randomization, helping developers recognize and avoid these issues in their own code. The project distinguishes itself by offering a structured, example-driven approach to learning idiomatic Go. It covers core design decisions such as when to use pointer versus value receivers, how to apply
Shows how generics eliminate repetitive code by separating data types from behavior.
jscpd is a code duplication detector that scans source code across 223 languages to find identical or near-identical copy-pasted blocks using a rolling hash algorithm. It is built with a Rust core for high performance, exposed through a Node.js API and CLI, and can be run as a standalone binary with no runtime dependencies. The tool detects duplicates in embedded languages within Vue, Svelte, Astro, and Markdown files by tokenizing each language block separately, and it supports extensionless scripts via shebang detection. The project distinguishes itself through its integration capabilities
Configures a maximum duplication percentage that causes the pre-commit hook to reject commits.
Pylint es una herramienta de análisis estático de código para Python que verifica el código fuente en busca de errores, violaciones de estándares de codificación y olores de código sin ejecutar el programa. Analiza el código en un árbol de sintaxis abstracta y recorre el árbol para detectar problemas, aplica reglas de estilo configurables y convenciones de nomenclatura, e identifica bloques de código duplicados comparando secuencias de origen tokenizadas. La herramienta también incluye un motor de inferencia que deduce los tipos de variables simulando rutas de código, permitiendo un análisis más profundo incluso en código sin tipos. Lo que distingue a Pylint es su arquitectura de verificador basada en complementos, que permite a los usuarios extender el análisis cargando módulos externos de Python que registran verificadores personalizados y reglas de inferencia en tiempo de ejecución. Admite la estratificación de archivos de configuración, fusionando configuraciones de múltiples archivos y argumentos de línea de comandos para que los valores predeterminados de todo el proyecto puedan ser anulados por opciones locales o específicas de complementos. Pylint también rastrea la calidad del código a lo largo del tiempo comparando los resultados del análisis actual con una puntuación de referencia almacenada, informando sobre mejoras o regresiones en ejecuciones sucesivas, y puede generar diagramas de clases y paquetes UML desde el árbol de sintaxis abstracta en formatos Graphviz, PlantUML o MermaidJS. La herramienta se integra en tuberías de integración continua y ganchos de pre-confirmación para ejecutar verificaciones en múltiples versiones del intérprete de Python automáticamente. Se puede instalar a través de pip, conda o un gestor de paquetes del sistema, y ofrece corrección ortográfica opcional de identificadores de código a través de la biblioteca enchant. Pylint también proporciona integración de editor para entornos como Emacs y TextMate, e incluye un visor de explicación de mensajes que imprime la descripción completa y el contexto de cualquier código de advertencia o error específico directamente desde la línea de comandos.
Scans Python source files for identical or near-identical code blocks and reports their locations and similarity percentage.
Pylint is a static code analyzer for Python that scans source code for errors, coding standard violations, code smells, and type-related issues without executing the program. It functions as a plugin-based linter framework, allowing users to extend its analysis capabilities with custom or third-party checks for project-specific rules and framework support. The tool also includes a duplicate code detector that identifies identical or near-identical code blocks across a project to help reduce redundancy. Beyond its core linting functionality, Pylint can generate UML class and package diagrams f
Identifies identical or near-identical code blocks across a project to help reduce redundancy.
PMD es un analizador de código estático multilingüe utilizado para identificar fallos de programación, variables no utilizadas y código muerto sin ejecutar el programa. Funciona como un detector de olores de código (code smells) y ejecutor de estándares de codificación, asegurando que el código fuente se adhiera a convenciones de nomenclatura específicas, requisitos estructurales y guías de estilo del proyecto. El proyecto cuenta con un motor de reglas basado en XPath que permite a los usuarios definir patrones de análisis personalizados usando consultas contra un árbol de sintaxis abstracta. También incluye un detector de copiar y pegar para identificar bloques de código duplicados en múltiples archivos y un diseñador visual de reglas para crear y probar patrones de detección personalizados. La superficie de análisis cubre la detección de errores, la identificación de problemas de mantenibilidad para reducir la deuda técnica y la verificación de implementaciones de pruebas. También proporciona capacidades para identificar métodos excesivamente complejos y listas de parámetros excesivas.
Identifies identical or near-identical code blocks by comparing tokenised source sequences across multiple files.
This project is a comprehensive guide and set of engineering standards for writing readable, maintainable, and scalable JavaScript code. It provides a framework for software architecture, refactoring patterns, and clean coding practices designed to improve codebase health and longevity. The guide emphasizes the application of SOLID principles and architectural strategies such as dependency inversion and the separation of concerns. It focuses on transforming complex conditional logic through polymorphism and refactoring, while promoting a transition from imperative loops to declarative functio
Establishes practices for eliminating redundant logic through architectural abstraction and consolidation.
Este proyecto es una guía de código limpio en Python y un recurso de refactorización. Proporciona una colección de principios de artesanía de software y ejemplos diseñados para mejorar la legibilidad y mantenibilidad del código fuente en Python. El recurso se centra en optimizar el nombramiento de variables para eliminar el mapeo mental y dividir las funciones en unidades de propósito único. Proporciona directrices para reducir la duplicación de código y organizar la lógica para garantizar que los componentes sigan siendo fáciles de extender y mantener. El contenido cubre la arquitectura de software y la calidad del diseño, incluyendo la implementación de principios SOLID y patrones de diseño estándar de la industria. También aborda la gestión de efectos secundarios y el uso de flujos de trabajo de pruebas automatizadas dentro de entornos virtuales.
Provides techniques for eliminating redundant logic through the creation of shared abstractions.
Este proyecto es un plugin de IDE IntelliJ que proporciona un entorno de desarrollo integrado para Rust. Sirve como orquestador de sistema de compilación e interfaz de depurador, ofreciendo un análisis de lenguaje completo, resaltado de sintaxis y asistencia inteligente para la edición de código. El plugin se integra con un servidor de lenguaje para proporcionar inferencia de tipos en tiempo real y navegación de código. Incluye una herramienta de análisis estático dedicada para detectar duplicados de código, analizar fugas de memoria y medir la cobertura de pruebas. El conjunto de herramientas cubre la gestión de la cadena de herramientas (toolchain) y la integración con Cargo para el manejo de dependencias y manifiestos. Además, proporciona capacidades para la creación de perfiles de rendimiento, depuración de programas en tiempo de ejecución y automatización de pruebas, así como soporte para el desarrollo de aplicaciones web, incluyendo la gestión de contenedores y la exploración de esquemas de bases de datos.
Scans the codebase to detect repetitive logic patterns and redundant code to reduce technical debt.
Dhall es un lenguaje de configuración con tipado fuerte diseñado para crear archivos de configuración programables que garantizan su terminación. Es un lenguaje no completo según Turing que utiliza un sistema de tipos estricto para asegurar la corrección y prevenir bucles infinitos durante la evaluación. El proyecto funciona como un motor de configuración determinista y herramienta de marshalling, convirtiendo expresiones programables en formatos estáticos como JSON, YAML y Bash. Se distingue por su enfoque en la seguridad e integridad, utilizando hashing semántico para fijar importaciones remotas y aplicando políticas de origen para prevenir la exfiltración de datos. Sus capacidades cubren una amplia superficie de gestión de configuración, incluyendo el uso de funciones polimórficas, tipos de unión y completado de registros para reducir la redundancia. Proporciona herramientas para la validación de esquemas, resolución de expresiones remotas y una implementación del Language Server Protocol para la integración con editores. El lenguaje proporciona una interfaz de línea de comandos y un REPL para evaluar expresiones y verificar la igualdad.
Define reusable values using let-expressions to avoid duplicating data across a configuration.
Reek es un analizador de código estático para proyectos Ruby diseñado para identificar fallos de diseño y problemas de mantenibilidad conocidos como code smells. Funciona como una herramienta de control de calidad que inspecciona el código fuente sin ejecutarlo para encontrar debilidades estructurales y deuda técnica. El analizador identifica patrones específicos como clases demasiado grandes, métodos largos y nombres poco descriptivos. También detecta problemas de diseño más complejos, incluyendo feature envy, data clumps, polimorfismo simulado y control coupling. La herramienta incluye capacidades para establecer líneas base de problemas para gestionar código heredado y filtrado basado en configuración para excluir directorios específicos. Soporta comprobaciones de calidad automatizadas mediante pipelines de integración continua y proporciona informes de análisis en formatos como JSON, YAML, XML y HTML.
Detects methods that use parameters to decide execution paths, signaling potential duplication or fragmented responsibilities.
SwiftTips es una colección curada de guías, bibliotecas y patrones de diseño centrados en el dominio del lenguaje Swift, la arquitectura de aplicaciones y el diseño de APIs. Proporciona un recurso técnico para implementar técnicas de codificación avanzadas y mejores prácticas arquitectónicas. El proyecto enfatiza la creación de interfaces seguras por tipos (type-safe) y conversacionales mediante la composición estratégica de protocolos y genéricos. Ofrece patrones especializados para construir sistemas de interfaz de usuario modulares y gestionar jerarquías de vistas complejas, junto con estrategias integrales para pruebas unitarias e inyección de dependencias. El recurso cubre una amplia gama de capacidades, incluyendo primitivas de programación funcional, utilidades avanzadas del sistema de tipos y estrategias de modelado de datos. También detalla técnicas para el manejo de errores, gestión de memoria y el desarrollo de interfaces de usuario responsivas.
Centralizes common data shared across different enum cases by wrapping them in a struct.