YAGNI = You Ain’t Gonna Need It
Emerged as one of the key principles of Extreme Programming
and says that you should do the simplest thing that could Possibly work!
10 Usability Heuristics for User Interface DesignMaxx Crawford
An overview of the 10 Usability Heuristics for User Interface Design developed by Jakob Nielsen of the Nielsen Norman Group. Each heuristic is explained and examples are provided.
I normally teach Introduction to Agile and Scrum over a 2 day session to teams. Here is a highly condensed 2-hour version of it that covers agile thinking and introduces scrum as a framework without getting into details.
I use it as a course material for teaching to teams or groups looking to get a perspective on "why" as opposed to "how" aspect of agile.
This was a presentation done for a basics of UI/UX for basecode.
For more informaton, you can reach out to me on
Aroyewun Babajide
aroyewunbabajide@gmail.com
https://twitter.com/damaroy
https://www.linkedin.com/in/aroyewunbabajide/
https://www.behance.net/damaroy
There you can find about definition of agile model.Working of agile model.You can also find where to use agile model.Examples of agile model is also given here.
We have created a software. The name of our software is soduko solver.This project is about to solving a Sudoku problem by a particular method which given a correct solution for given problem.
We work very hard to complete this project and able to build logic that can find out the solution of Sudoku problem and it generate solution for some multiple grids …
Komplexe Fragen und Problemstellungen lassen sich auch spielerisch angehen. Gerade agile Spiele machen den Wandel greifbar, eröffnen neue Perspektiven und ermöglichen es, Erkenntnisse und kreative Ideen in einem geschützten Spielraum zu entwickeln.
Wie lassen sich agile Spiele gezielt einsetzen? Welche agilen Spiele gibt es? Wie lassen sich agile Spiele (weiter-)entwickeln? Wie funktioniert agiles Online-Gaming?
Antworten darauf liefert Böhmers Buch. Anschaulich zeigt es, wie agile Spiele gezielt eingesetzt werden und welche neuen Möglichkeiten sich im spielerischen Umgang mit Herausforderungen ergeben. Böhmers Buch liefert ein umfassendes Set an agilen Spielen inklusive praktischer Tipps zur Anwendung. Von Kick-off-Spielen über Spiele zur Vermittlung agiler Mindsets bis hin zu Strategiespielen.
Dieses Buch ist die praktische Toolbox für agile Workshop-Macher.
10 Usability Heuristics for User Interface DesignMaxx Crawford
An overview of the 10 Usability Heuristics for User Interface Design developed by Jakob Nielsen of the Nielsen Norman Group. Each heuristic is explained and examples are provided.
I normally teach Introduction to Agile and Scrum over a 2 day session to teams. Here is a highly condensed 2-hour version of it that covers agile thinking and introduces scrum as a framework without getting into details.
I use it as a course material for teaching to teams or groups looking to get a perspective on "why" as opposed to "how" aspect of agile.
This was a presentation done for a basics of UI/UX for basecode.
For more informaton, you can reach out to me on
Aroyewun Babajide
aroyewunbabajide@gmail.com
https://twitter.com/damaroy
https://www.linkedin.com/in/aroyewunbabajide/
https://www.behance.net/damaroy
There you can find about definition of agile model.Working of agile model.You can also find where to use agile model.Examples of agile model is also given here.
We have created a software. The name of our software is soduko solver.This project is about to solving a Sudoku problem by a particular method which given a correct solution for given problem.
We work very hard to complete this project and able to build logic that can find out the solution of Sudoku problem and it generate solution for some multiple grids …
Komplexe Fragen und Problemstellungen lassen sich auch spielerisch angehen. Gerade agile Spiele machen den Wandel greifbar, eröffnen neue Perspektiven und ermöglichen es, Erkenntnisse und kreative Ideen in einem geschützten Spielraum zu entwickeln.
Wie lassen sich agile Spiele gezielt einsetzen? Welche agilen Spiele gibt es? Wie lassen sich agile Spiele (weiter-)entwickeln? Wie funktioniert agiles Online-Gaming?
Antworten darauf liefert Böhmers Buch. Anschaulich zeigt es, wie agile Spiele gezielt eingesetzt werden und welche neuen Möglichkeiten sich im spielerischen Umgang mit Herausforderungen ergeben. Böhmers Buch liefert ein umfassendes Set an agilen Spielen inklusive praktischer Tipps zur Anwendung. Von Kick-off-Spielen über Spiele zur Vermittlung agiler Mindsets bis hin zu Strategiespielen.
Dieses Buch ist die praktische Toolbox für agile Workshop-Macher.
15–Puzzle Problem is State-space search problems.
Branch and Bound Algorithm is used to Solve this Problem.
The application follows International Standard.
What is agile? Where did it come from, and how can it help me?
This session will go through a history of agile, including the origins of waterfall, the Toyota Production System and lean manufacturing, the creation of the agile manifesto, and how these all lead to the modern agile development frameworks we use today. By exploring the original design and intent behind agile principles and practices, we'll also uncover common pitfalls to agile adoption, and insights into overcoming them.
Usability of web application.
@ Kindly Follow my Instagram Page to discuss about your mental health problems-
-----> https://instagram.com/mentality_streak?utm_medium=copy_link
@ Appreciate my work:
-----> behance.net/burhanahmed1
Thank-you !
Intro to programming and how to start that careerTarek Alabd
That was my talk with Mofakroon team.
That was an intro to programming.
What is programming and programming languages?
Why should we learn programming?
12 benefits from learning programming.
Why all these programming languages?
What is he best programming language?
Everything about programming and how to lean the basics.
[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented GenerationDataScienceConferenc1
Retrieval Augmented Generation (RAG) combines the concepts of semantic search and LLM-based text generation. When a person makes a query in natural language, the query is compared to the entries in the knowledge base and most relevant results are returned to the LLM, which uses this extra information to generate more accurate and reliable response. RAG can therefore limit hallucination and provide accurate responses from reliable source. In this talk, we will present the concept of RAG and underlying concept of semantic search, and present available libraries and vector databases.
Given that Agile is an iterative and incremental process, it should come as no surprise that there are different levels of Agile planning to help deliver value early while working toward a larger goal. To find success with Agile, it’s important to understand how to effectively plan at the release, iteration, story, and task levels.
What you’ll learn in this presentation:
• The basics of release and iteration planning.
• The differences between a release and an iteration.
• The basics of task planning.
The introduction of Computational Thinking. What is the Computational Thinking? How to apply it into the real educational environment? You can find the solution in this slide.
User Interface Prototyping - Low- and High-Fidelity Prototyping TodayThomas Memmel
Zühlke offers various usability engineering services – get in touch at www.zuehlke.com/usability
User Studies, User Profiling & User Modeling (e.g. Personas), User-Centered Requirements Engineering, Usability Concepts & Modeling (e.g. Scenarios, Storyboards), Agile Development & User Experience (e.g. User Stories combined with elements of Interaction Design), User Interface Prototyping (Low- & High-Fidelity), User Interface Engineering (Integration of Usability Methodology in the Software Development Process), Usability Testing (e.g. with Mobile Usability Lab), User Interface Specification.
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...DevDay.org
People talk about ‘clean code’ and ‘best practices’ but what do they really mean? We are going to explore these topics and share with you the fundamentals of clean code and how to be a good teammate and a coder people will respect even after they read your code!
Clean code is subjective and every developer has a personal take on it. There are some ideas that are considered best practice and what constitutes clean code within the industry and community, but there is no definitive distinction.
15–Puzzle Problem is State-space search problems.
Branch and Bound Algorithm is used to Solve this Problem.
The application follows International Standard.
What is agile? Where did it come from, and how can it help me?
This session will go through a history of agile, including the origins of waterfall, the Toyota Production System and lean manufacturing, the creation of the agile manifesto, and how these all lead to the modern agile development frameworks we use today. By exploring the original design and intent behind agile principles and practices, we'll also uncover common pitfalls to agile adoption, and insights into overcoming them.
Usability of web application.
@ Kindly Follow my Instagram Page to discuss about your mental health problems-
-----> https://instagram.com/mentality_streak?utm_medium=copy_link
@ Appreciate my work:
-----> behance.net/burhanahmed1
Thank-you !
Intro to programming and how to start that careerTarek Alabd
That was my talk with Mofakroon team.
That was an intro to programming.
What is programming and programming languages?
Why should we learn programming?
12 benefits from learning programming.
Why all these programming languages?
What is he best programming language?
Everything about programming and how to lean the basics.
[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented GenerationDataScienceConferenc1
Retrieval Augmented Generation (RAG) combines the concepts of semantic search and LLM-based text generation. When a person makes a query in natural language, the query is compared to the entries in the knowledge base and most relevant results are returned to the LLM, which uses this extra information to generate more accurate and reliable response. RAG can therefore limit hallucination and provide accurate responses from reliable source. In this talk, we will present the concept of RAG and underlying concept of semantic search, and present available libraries and vector databases.
Given that Agile is an iterative and incremental process, it should come as no surprise that there are different levels of Agile planning to help deliver value early while working toward a larger goal. To find success with Agile, it’s important to understand how to effectively plan at the release, iteration, story, and task levels.
What you’ll learn in this presentation:
• The basics of release and iteration planning.
• The differences between a release and an iteration.
• The basics of task planning.
The introduction of Computational Thinking. What is the Computational Thinking? How to apply it into the real educational environment? You can find the solution in this slide.
User Interface Prototyping - Low- and High-Fidelity Prototyping TodayThomas Memmel
Zühlke offers various usability engineering services – get in touch at www.zuehlke.com/usability
User Studies, User Profiling & User Modeling (e.g. Personas), User-Centered Requirements Engineering, Usability Concepts & Modeling (e.g. Scenarios, Storyboards), Agile Development & User Experience (e.g. User Stories combined with elements of Interaction Design), User Interface Prototyping (Low- & High-Fidelity), User Interface Engineering (Integration of Usability Methodology in the Software Development Process), Usability Testing (e.g. with Mobile Usability Lab), User Interface Specification.
[DevDay2018] Let’s all get along. Clean Code please! - By: Christophe K. Ngo,...DevDay.org
People talk about ‘clean code’ and ‘best practices’ but what do they really mean? We are going to explore these topics and share with you the fundamentals of clean code and how to be a good teammate and a coder people will respect even after they read your code!
Clean code is subjective and every developer has a personal take on it. There are some ideas that are considered best practice and what constitutes clean code within the industry and community, but there is no definitive distinction.
”In general programmers are pretty smart people. Smart people sometimes like to show off their smarts by demonstrating their mental juggling abilities. One difference between a smart programmer and a professional programmer is that the professional understands that clarity is king. Professionals use their powers for good and write code that others can understand.”
WordCamp Nashville: Clean Code for WordPressmtoppa
Slides from my talk at WordCamp Nashville, including notes. Covers why clean code is important, and provides 10 tips to make your code cleaner, for WordPress and beyond
Some of the things I learned during the last years from the GURU of the AGILE manifesto.
Be a Clean Coder from Robert C. Martin
Be a Pragmatic Programmer from Andrew Hunt
Be a extreme Programmer from Kent Beck
Understand the Continuous Delivery from Jez Humble and David Farley.
Thanks to Bruno Bossola , Marcello Todori and Mario Romano for the good chats about this topics.
Code we've written once has to be kept readable, maintainable, understandable and extensible for many years. Good code is not self-serving but the foundation for working together.
Refactoring can help you to keep the quality of the relevant parts of our systems high.
The technique is really easy (almost too easy) - improve the naming, structure, and responsibility in small steps that don't change behavior and run your tests after each step.
18 years ago I got hooked on Refactoring when Martin Fowler's first book came out. I've been using it since then on a daily basis on many different projects. Since then a lot has changed, especially with the help of modern IDEs with their automated refactorings and intentions.
Now he asked me to help review the 2nd edition. Our discussions reminded me that each generation of developers should be taught this crucial skill. That's why I want to give an overview of core refactorings and code-smells but also demonstrate the tips and tricks of today's tools that make this task so much easier.
Plus a sneak preview of the upcoming book.
If your project has working features, a living design system, quality assurance and a code style guide, there is nothing that you will learn in this talk. Maybe.
This course provides a detailed introduction to the Object Oriented techniques identified by Robert Martin as the SOLID principles of software design. Intended for both novice and intermediary developers, each of the five principles are fully defined and explored. Real-world coding examples are provided for each software tenant to help fully expound upon the design techniques. By the end of the session, developers will be able to identify common code smells while applying SOLID programming practices that ensure clean and maintainable code.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Launch Your Streaming Platforms in MinutesRoshan Dwivedi
The claim of launching a streaming platform in minutes might be a bit of an exaggeration, but there are services that can significantly streamline the process. Here's a breakdown:
Pros of Speedy Streaming Platform Launch Services:
No coding required: These services often use drag-and-drop interfaces or pre-built templates, eliminating the need for programming knowledge.
Faster setup: Compared to building from scratch, these platforms can get you up and running much quicker.
All-in-one solutions: Many services offer features like content management systems (CMS), video players, and monetization tools, reducing the need for multiple integrations.
Things to Consider:
Limited customization: These platforms may offer less flexibility in design and functionality compared to custom-built solutions.
Scalability: As your audience grows, you might need to upgrade to a more robust platform or encounter limitations with the "quick launch" option.
Features: Carefully evaluate which features are included and if they meet your specific needs (e.g., live streaming, subscription options).
Examples of Services for Launching Streaming Platforms:
Muvi [muvi com]
Uscreen [usencreen tv]
Alternatives to Consider:
Existing Streaming platforms: Platforms like YouTube or Twitch might be suitable for basic streaming needs, though monetization options might be limited.
Custom Development: While more time-consuming, custom development offers the most control and flexibility for your platform.
Overall, launching a streaming platform in minutes might not be entirely realistic, but these services can significantly speed up the process compared to building from scratch. Carefully consider your needs and budget when choosing the best option for you.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
2. YAGNI
YAGNI = You Ain’t Gonna Need It
Emerged as one of the key principles of Extreme Programming
“Always implement things when you actually need them, never when you just think that
you may need them”
Do the Simplest Thing That Could Possibly Work
3.
4. YAGNI
Reasons why this principle exists:
● Prevents waste of time with unnecessary work
● Improves the developer productivity and product simplicity
● Remember: features are expensive, both to develop and maintain
● Product changes requirements, all the time!
5. YAGNI
“Every line of code we don’t write is dollars we didn’t spend, and time on the calendar
we get back for free.” – Tim Evans-Ariyeh
“The cheapest, fastest, and most reliable components of a computer system are those
that aren’t there.” – Gordon Bell
6. YAGNI
The cost of build: all the effort spent on analyzing, programming, and testing this now
useless feature.
● More code to compile
● More code to maintain
● More chances to cause bugs
● Confuse developers. What’s this code for?
7. YAGNI
The common reason why people build presumptive features is because they think it will
be cheaper to build it now rather than build it later.
Cost of delay: put a full storm risks feature into production and be generating revenue
only months earlier.
cost of carry: the presumptive feature adds some complexity to the software, this
complexity makes it harder to modify and debug that software, thus increasing the cost
of other features.
8. YAGNI
Yagni is only a viable strategy if the code is easy to change, so expending effort on
refactoring isn't a violation of yagni because refactoring makes the code more
malleable.
It actually requires malleable code.
10. Clean Code
Code that is easy to understand and easy to change
It is not enough for code to work!
"Any fool can write code that a computer can understand.
Good programmers write code that humans can understand."
- Martin Fowler
12. Clean code
“You should name a variable using the same care with which you name a first-born
child.”
“It is not the language that makes programs appear simple. It is the programmer that
make the language appear simple!”
“Of course bad code can be cleaned up. But it’s very expensive.”
“Code, without tests, is not clean. No matter how elegant it is, no matter how readable
and accessible, if it hath not tests, it be unclean”
“If you're good at the debugger it means you spent a lot of time debugging. I don't want
you to be good at the debugger.”
Robert C. Martin
13. Clean code - Meaningful Names
Variables
int count; // elapsed time in days;
int = elapsedTimeInDays;
Classes
Represent "things" - should be nouns, avoid verbs
For example: Customer, WikiPage, Account, and AddressParser
Methods
Do things - should have verb or verb phrase names
For example: convert(), delete(), or save().
14. Clean code - Arguments
A function shouldn’t have more than 3 arguments. Keep it as low as possible.
How to solve it?
When a function seems to need more than two or three arguments, it is likely that some
of those arguments ought to be wrapped into a class of their own.
Reducing the number of arguments by creating objects out of them may seem like
cheating, but it’s not.
15. Clean code - Methods or functions
“The first rule of functions is that they should be small. The second rule of functions is
that they should be smaller than that” - Robert Martin
Do one thing!
● Methods should not have more than an average of 20 code lines
● If needed, extract it to another method with a proper name that does a single thing
It's always better read one method containing 20 lines calling 10 different methods,
than method containing 400 lines unnamed logic and twisted commentary.
16. Clean code - Classes
Rather than count lines, count responsibilities - Single Responsibility Principle
Many small classes is better
Large, multipurpose classes force us to scroll through code that we don’t need to know
about right now.
OCP, Open Close Principle
Classes should be open for extension but closed for modifications
Ideally, we add new functionality by extending the system, not modifying the existing code.
17. Clean code - Classes
Classes should have a small number of instance variables
High cohesion is when you have a class that does a well defined job. Low cohesion is when a class does a lot of
jobs that don't have much in common.
Methods should affect as many variables in the class as possible to achieve “high
cohesion”
When variables aren’t used by many methods, those are probably begging for a new
class
When classes lose cohesion, it’s time to split them up.
18. Clean code - DRY principle
Dont Repeat Yourself (DRY)
Write Every Time (WET)
The biggest benefit of using DRY is maintainability.
● Readability
● Reuse
● Cost
● Testing
19. Clean code - Comments
If you are writing comments to prove your point, you are doing mistake!
Our code should explain everything. Be DRY
Correct naming can prevent comments.
Comments tend to be obsolete
*Legal and copyright comments are a different situation, they are necessary
20. Conclusion
Clean code means benefits: pleasant work, less stress, unit tests, easy debugging
and better quality.
You are reducing the cost of maintenance of the application you are writing.
You are making it easier to estimate the time needed for new features.
You are making it easier to fix bugs.
Essentially you are making the life easier for everyone involved in the project.