Coding Excellence - alice-adventures/alice GitHub Wiki
Coding Excellence
At Alice, we believe that coding excellence can be achieved by embracing Ada, SPARK and SOLID principles, among others¹. We strive to create a community of both Participants and Developers who are passionate about software development and committed to continuous learning and improvement.
To achieve coding excellence in Alice, Developers and Participants can follow good coding practices, engage in peer review, use testing frameworks, utilize continuous integration and deployment tools, collaborate, and use code metrics tools to measure the quality of their code.
For Participants, we encourage the use of Ada and SPARK as programming languages to develop reliable, secure, and high-performance code. We provide support to a rich set of Problem Sources through interfaces that Participants can implement to solve Problems and explore different algorithms and data structures. We also emphasize the importance of writing clear and maintainable code by following SOLID principles.
For Developers, we are committed to creating a robust and extensible framework. We encourage the use of SOLID principles in designing and implementing new features and functionality, and we provide a collaborative development environment where Developers can share knowledge and experience.
While we strive to achieve coding excellence through the implementation of the best practices, we recognize that we are not perfect. We know that there is always room for improvement, and we are committed to continuously enhancing Alice to provide the best possible user experience.
We welcome feedback and suggestions from our community of Participants and Developers, as they play an essential role in helping us achieve our goals. With their contributions and support, we can work together to create a vibrant and thriving framework for learning and inspiring coding excellence.
Good coding practices
Developers and Participants can follow good coding practices, such as using descriptive variable names, writing clear and concise comments, and organizing code into functions and modules. This makes the code more readable and easier to understand.
Write high-quality, efficient, and maintainable code that meets the project requirements and follows industry best practices.
Collaboration
Participants can collaborate with each other to solve puzzles and share code, learning from each other's approaches and gaining insights into new techniques.
Develop code that is well-designed, well-organized, and well-documented, using consistent coding standards and style.
Peer review
Developers can engage in peer review, where other Developers review their code and provide feedback. This can help identify potential issues or bugs, and improve the overall quality of the code.
Create software that is easy to understand, modify, and extend, while minimizing errors and maximizing reliability.
Testing
Developers and Participants can use testing frameworks to test their code and ensure that it works as expected. This can include unit tests, integration tests, and system tests.
Test code thoroughly to ensure that it works as intended and is resilient to changes.
Continuous integration and deployment
Developers can use continuous integration and deployment tools to automatically build, test, and deploy new versions of Alice. This ensures that changes are thoroughly tested and deployed quickly.
Embrace a mindset of continuous improvement, where code is regularly reviewed, tested, and refactored to ensure it is of the highest quality possible.
Code metrics
Developers and Participants can use code metrics tools to measure the quality of their code, such as complexity, readability, and maintainability. This can help identify areas for improvement and ensure that the code is of high quality.
¹ Other principles considered: Correctness by Construction, DRY, KISS, YAGNI and Law of Demeter.