100% found this document useful (4 votes)
183 views

Instant ebooks textbook Clean Code with C# - Second Edition: Refactor your legacy C# code base and improve application performance using best practices Alls download all chapters

using

Uploaded by

ricovdaitha84
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (4 votes)
183 views

Instant ebooks textbook Clean Code with C# - Second Edition: Refactor your legacy C# code base and improve application performance using best practices Alls download all chapters

using

Uploaded by

ricovdaitha84
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Download the full version of the textbook now at textbookfull.

com

Clean Code with C# - Second Edition: Refactor


your legacy C# code base and improve
application performance using best practices
Alls
https://textbookfull.com/product/clean-code-with-
c-second-edition-refactor-your-legacy-c-code-base-
and-improve-application-performance-using-best-
practices-alls/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Clean C++: Sustainable Software Development Patterns and


Best Practices with C++ 17 1st Edition Stephan Roth

https://textbookfull.com/product/clean-c-sustainable-software-
development-patterns-and-best-practices-with-c-17-1st-edition-stephan-
roth/
textbookfull.com

Beautiful C 30 Core Guidelines for Writing Clean Safe and


Fast Code 1st Edition Davidson

https://textbookfull.com/product/beautiful-c-30-core-guidelines-for-
writing-clean-safe-and-fast-code-1st-edition-davidson/

textbookfull.com

Get Your Hands Dirty on Clean Architecture Build clean


applications with code examples in Java 2nd Edition Tom
Hombergs
https://textbookfull.com/product/get-your-hands-dirty-on-clean-
architecture-build-clean-applications-with-code-examples-in-java-2nd-
edition-tom-hombergs/
textbookfull.com

Postcolonial Paris Fictions of Intimacy in the City of


Light Laila Amine

https://textbookfull.com/product/postcolonial-paris-fictions-of-
intimacy-in-the-city-of-light-laila-amine/

textbookfull.com
Practical Decision Making using Super Decisions v3 An
Introduction to the Analytic Hierarchy Process 1st Edition
Enrique Mu
https://textbookfull.com/product/practical-decision-making-using-
super-decisions-v3-an-introduction-to-the-analytic-hierarchy-
process-1st-edition-enrique-mu/
textbookfull.com

Practical Numerical C Programming: Finance, Engineering,


and Physics Applications Philip Joyce

https://textbookfull.com/product/practical-numerical-c-programming-
finance-engineering-and-physics-applications-philip-joyce/

textbookfull.com

A Course for Teaching English Learners, 3rd Edition Diaz-


Rico

https://textbookfull.com/product/a-course-for-teaching-english-
learners-3rd-edition-diaz-rico/

textbookfull.com

Language And Online Identities The Undercover Policing Of


Internet Sexual Crime Tim Grant Nicci Macleod

https://textbookfull.com/product/language-and-online-identities-the-
undercover-policing-of-internet-sexual-crime-tim-grant-nicci-macleod/

textbookfull.com

Urban Experience and Design: Contemporary Perspectives on


Improving the Public Realm 1st Edition Ann Sussman

https://textbookfull.com/product/urban-experience-and-design-
contemporary-perspectives-on-improving-the-public-realm-1st-edition-
ann-sussman/
textbookfull.com
Testing Software and Systems 32nd IFIP WG 6 1
International Conference ICTSS 2020 Naples Italy December
9 11 2020 Proceedings Valentina Casola
https://textbookfull.com/product/testing-software-and-systems-32nd-
ifip-wg-6-1-international-conference-ictss-2020-naples-italy-
december-9-11-2020-proceedings-valentina-casola/
textbookfull.com
2ND EDITION

Clean Code with C#

Clean Code with C#


Traditionally associated with Windows desktop applications and game development, C# has expanded
into web, cloud, and mobile development. However, despite its extensive coding features, professionals
often encounter issues with efficiency, scalability, and maintainability due to poor code. Clean Code in C#
guides you in identifying and resolving these problems using coding best practices. 2ND EDITION
This book starts by comparing good and bad code to emphasize the importance of coding standards,
principles, and methodologies. It then covers code reviews, unit testing, and test-driven development,
and addresses cross-cutting concerns. As you advance through the chapters, you’ll discover programming
best practices for objects, data structures, exception handling, and other aspects of writing C# computer
programs. You’ll also explore API design and code quality enhancement tools, while studying examples of

Clean Code with C#


poor coding practices to understand what to avoid.
By the end of this clean code book, you’ll have the developed the skills needed to apply industry-approved
coding practices to write clean, readable, extendable, and maintainable C# code.

WHAT YOU WILL LEARN


Get a free PDF of this book
• Master the art of writing evolvable and adaptable code
• Implement the fail-pass-refactor methodology using a sample C# Refactor your legacy C# code base and improve application
console application
• Develop custom C# exceptions that provide meaningful information
performance using best practices

JASON ALLS
• Identify low-quality C# code in need of refactoring
• Improve code performance using profiling and refactoring tools
packt.link/free-ebook/9781837635191
• Create efficient and bug-free code using functional
programming techniques
• Write cross-platform code using MAUI
• Develop cloud-deployable microservices for versatile applications

www.packtpub.com
JASON ALLS
Clean Code with C#

Refactor your legacy C# code base and improve application


performance using best practices

Jason Alls

BIRMINGHAM—MUMBAI
Clean Code with C#
Copyright © 2023 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted
in any form or by any means, without the prior written permission of the publisher, except in the case
of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information
presented. However, the information contained in this book is sold without warranty, either express
or implied. Neither the author, nor Packt Publishing or its dealers and distributors, will be held liable
for any damages caused or alleged to have been caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and
products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot
guarantee the accuracy of this information.

Associate Group Product Manager: Kunal Sawant


Book Project Manager: Prajakta Naik
Senior Editor: Ruvika Rao
Technical Editor: Vidhisha Patidar
Copy Editor: Safis Editing
Indexer: Tejal Daruwale Soni
Production Designer: Alishon Mendonca
DevRel Marketing Coordinators: Shrinidhi Manoharan and Sonia Chauhan
Business Development Executive: Kriti Sharma

First published: July 2020


Second edition: December 2023

Production reference: 1141223

Published by Packt Publishing Ltd.


Grosvenor House
11 St Paul’s Square
Birmingham
B3 1RB, UK.

ISBN 978-1-83763-519-1

www.packtpub.com
To my parents, for supporting me throughout my life and career. To all the people in the world of software
that have made my career possible, and who have employed me, trained me, and worked alongside me.
You have been instrumental in helping me to get to where I am today.
I thank you all.

– Jason Alls
Contributors

About the author


Jason Alls has been programming for over 21 years using Microsoft technologies. Working with an
Australasian company, he started his career developing call center management reporting software
used by global clients including telecom providers, banks, airlines, and the police. He then moved on
to develop GIS marketing applications and worked in the banking sector performing data migrations
between Oracle and SQL Server. Certified as an MCAD in C# since 2005, he has been involved in the
development of various desktop, web, and mobile applications.

I would like to thank my parents for always being there, and supporting me throughout my life and
career. Career-wise, I would like to thank all the people in the world of computing who have made my
career possible. Especially those who have employed me, trained me, and worked alongside me. You
have helped me to get to where I am today.

A special thank you to all the staff at Packt Publishing who provided me with the opportunity to write
this book, and who assisted me in improving the content. It has been an eye-opening experience and
a pleasant one. It is your hard work and dedication to the book-writing process that enables computer
programmers like me to become accomplished authors. This book would not be what it is without your
valuable input.
About the reviewers
Vladica Ognjanovic, CEO of MVP-Soft based in the USA and Serbia, holds a Bachelor’s in Computer
Science from the University of Niš. With over two decades in the tech industry, Vladica has mastered
IT management, software development, and database design. He’s led various enterprise projects,
including custom ERP solutions, price tracking systems, IoT solutions, demonstrating strong skills
in web, desktop, and database technologies. Known for innovative problem-solving, Vladica excels
in team leadership and client engagement, making significant contributions to software development
and project management.
Omprakash Pandey, has been working with industry experts and helping SW consultants from
last 20 years. His SW expertise ranges from Microsoft 365, Power Platform, Security Solutions,
JEE technologies, .Net and Cloud expertise. He has been working on areas of Azure Infrastructure,
Azure Development using C#, Azure Architecting. He has also delivered consulting assignments and
developed products for SharePoint custom solutions using .Net. Organizing resources and ensuring
project completion in right time DevOps has been the key transformation agent for the same. He is
also expert in Azure DevOps solution.
Since it first computer, a Commodore Vic20, Gian Maria was interested in everything regarding
Computer Programming. Its passion range from low level (Assembly) to project management. He
worked with Microsoft .NET technologies since very first beta as a passionate Visual Basic .NET then
C# software architect/developer. He has strong experience in DevOps methodologies and techniques,
covering all aspect from managing Requirements to effectively manage code with Git to automatic
Deployment on premise and on cloud resources. Always curious about new technologies he lives and
work in Italy as an independent consultant.
Jegadeesan Ponnusamy worked in the software industry for more than 16 years. He has a master’s
degree in software engineering from the Birla Institute of Technology & Science, Pilani. He received
gold medal, Sri Hiren D. Barucha Memorial award for his excellence in academic and other recognitions
for his work in his career. He currently lives in Voorhees, New Jersey with his wife and two daughters.
Table of Contents

Prefacexvii

1
Coding Standards and Principles in C# 1
Technical requirements 2 Coding principles 5
Good code versus bad code 2 Coding methodologies 10

The need for coding standards, Summary21


principles, and methodologies 3 Questions22
Coding standards 4 Further reading 23

2
Code Review – Process and Importance 25
A brief introduction to GitHub 26 The company’s coding guidelines and
What is GitHub? 26 business requirement(s) 43
GitHub’s use within the code review process 27 Naming conventions 43
Resources for learning 28 Formatting43
Testing44
The code review process 29 Documentation45
Preparing code for review 30 Architectural guidelines and design patterns 45
Leading a code review 32 Performance and security 47
Issuing a pull request 33 Knowing when to send code for review47
Responding to a pull request 37
Providing and responding to review
Effects of feedback on reviewees 40
feedback48
Knowing what to review 42 Providing feedback as a reviewer 49
viii Table of Contents

Responding to feedback as a reviewee 49 Questions50


Summary50 Further reading 51

3
Classes, Objects, and Data Structures 53
Technical requirements 54 Immutable objects and data structures 85
Organizing classes 54 Using records to create immutable objects 87
A class should have only one Objects should hide data and expose
responsibility58 methods88
Class organization 60 An example of encapsulation 88
Commenting for documentation Data structures should expose data
generation61 and have no methods 89
Cohesion and coupling 65 The SOLID software methodology 90
Tight coupling 66
SRP90
Low coupling 67
Open/closed principle (OCP) 91
Low cohesion 68
Liskov substitution principle (LSP) 91
High cohesion 70
Interface segregation principle (ISP) 93
Designing for change 71 Dependency inversion principle (DIP) 94
Interface-oriented programming 71 Summary95
Dependency injection and inversion of control 74
Questions96
The Law of Demeter 81 Further reading 96
A good and a bad example (chaining) of the
Law of Demeter 83

4
Writing Clean Functions 97
Technical requirements 98 Unclean methods and how they affect
Understanding the difference software102
between OOP and FP 98 FP and clean methods 104
Explanation of the differences 99 FP examples 105
Understanding why FP can lead to cleaner Keeping methods small 109
functions101
Indenting code 112
Table of Contents ix

Breaking out of loops 113 Declaring variables close to their usage 126
Avoiding duplication 113 Disposing of resources 127

Avoiding multiple parameters 115 Applying security in methods,


Implementing the SRP 117 especially in APIs 127
Handling exceptions in FP 123 Input validation 127
Authentication and authorization 128
Adding comments for readability 125
Protecting sensitive data 128
XML documentation comments 125
Inline comments 126 Summary128
Variable declaration and memory Questions129
management126 Further reading 129

5
Exception Handling 131
Technical requirements 132 Creating custom exceptions and
Overview of exception handling in C#132 when to use them 147
try-catch132 Avoiding common mistakes in
try-catch-finally133 exception handling 149
Testing exception handling 151
Clean code exception-handling
principles135 Unit testing exception handling 152
Integration testing exception handling 153
SRP136
End-to-end testing exception handling 155
OCP138
DIP142 An employee management example
of mocking and unit testing with
Best practices for handling exceptions144
correct exception handling 156
Handling the TPL
Summary161
AggregateException exception 145
Use await with try-catch inside async methods 145
Questions162
Flatten the exception hierarchy 146 Further reading 163
Handle individual exceptions 146
Handle exceptions as they occur 147
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
x Table of Contents

6
Unit Testing 165
Technical requirements 166 Using code coverage analysis in Visual Studio
2022178
Understanding unit testing 166
Ensuring your unit tests themselves are correct 179
Writing testable code 166
Using stubs in place of mocks 179
TDD168 Mocking data 180
An example of using the AAA TDD pattern 169
Integrating tests into the continuous
Choosing a testing framework 170 integration and deployment (CI/CD)
Testing framework attribute differences 172 pipeline184
TDD using MSTest 173 Integrating tests into an Azure DevOps CI/
TDD using NUnit 174 CD pipeline 184
TDD using xUnit 175
Problem tests 186
Running tests in Visual Studio 176
Summary188
Writing effective unit tests 177 Questions189
Further reading 189

7
Designing and Developing APIs 191
Technical requirements 191 Web API security with OWASP 210
What is an API? 192 Importance of OWASP adherence in C# API
APIs help different consumers build loosely development210
coupled applications 192 Creating an OWASP-compliant API 211
Idempotent and non-idempotent operations 193 Implementing OWASP-compliant two-factor
HTTP verbs 194 authentication (2FA) 215
Important API design topics you must consider196 OpenID Connect (OIDC) and OAuth 2.0
(OAuth2)219
How can clean code help API design and
development?198 Summary223
The API design process 200
Questions224
API security risks and their mitigations 202
Further reading 225
On-premises APIs versus cloud APIs 205

API development in C# 207


Table of Contents xi

8
Addressing Cross-Cutting Concerns 227
A definition of cross-cutting concerns228 Transaction management 239
Importance and impact on software Validation241
development230 Auditing and compliance 242
Localization and internationalization 244
Common examples of cross-cutting
Logging and monitoring 246
concerns231
Logging231 Summary247
Error handling and exception management 232 Questions248
Caching236 Further reading 248
Performance optimization 237

9
AOP with PostSharp 251
Technical requirements 251 Adding a resource pool concern 273
AOP252 Adding a configuration settings concern 274
Adding an instrumentation concern 274
AOP frameworks 253

How AOP works with PostSharp 254 PostSharp and build pipeline
considerations275
Extending the aspect framework 255
Dynamic AOP with Castle.
Project – Cross-cutting concerns DynamicProxy276
reusable library 258
Summary278
Adding a caching concern 259
Questions278
Adding file logging capabilities 260
Adding an exception-handling concern 263 Further reading 278
Adding a security concern 264
Adding a validation concern 267
Adding a transaction concern 272
xii Table of Contents

10
Using Tools to Improve Code Quality 279
Technical requirements 280 Continuous integration with GitHub
Code analysis 280 Actions and CodeQL 296
Using quick actions 282 Summary298
Using the JetBrains dotTrace profiler 283 Questions298
Using JetBrains ReSharper 285 Further reading 299
Using Telerik JustDecompile 295

11
Refactoring C# Code 301
Technical requirements 302 The lazy class (the freeloader and the lazy
object)323
Application-level code smells 302
The middleman class 323
Boolean blindness 302
The orphan class of variables and constants 323
Combinatorial explosion 304
Primitive obsession 324
Contrived complexity 305
Refused bequest 326
Data clump 306
Speculative generality 327
Deodorant comments 307
Tell, Don’t Ask 327
Duplicate code 307
Temporary fields 327
Lost intent 308
The mutation of variables 308 Method-level smells 327
The oddball solution 311 The black sheep method 327
Shotgun surgery 313 Cyclomatic complexity 327
Solution sprawl 314 Contrived complexity 328
Uncontrolled side effects 315 Dead code 328
Excessive data return 328
Class-level code smells 315
Feature envy 328
Cyclomatic complexity 315
Identifier size 328
Divergent change 319
Inappropriate intimacy 329
Downcasting320
Long lines (God lines) 329
Excessive literal use 320
Lazy methods 329
Feature envy 320
Long methods (God methods) 329
Inappropriate intimacy 322
Long parameter lists (too many parameters) 329
Indecent exposure 322
Message chains 329
The large class (the God object) 323
Table of Contents xiii

The middleman method 330 Summary330


Oddball solutions 330 Questions331
Speculative generality 330
Further reading 332

12
Functional Programming 333
Technical requirements 334 Functional error handling 348
Imperative versus functional Option types 349
programming334 The Maybe monad 349
Imperative programming 334 The Either monad 349
Key differences 336 Result objects 350

Overview of functional Functional data transformation and


programming in C# 338 pipelines350
First-class functions and Lambda Lazy evaluation 353
expressions339 Pattern matching 355
Lambda expressions in C# 339 Currying and partial application 357
Higher-order functions 340 Currying357
Immutability and pure functions 342 Partial application 357
Key differences 358
Functional composition 343
Using Lambda expressions 343 Concurrency with functional
Using LINQ and extension methods 344 programming358
Using higher-order functions 344 Recursion362
Option types and the Maybe monad 344 Summary363
Usage of option types in C# 346 Questions364
The Maybe monad in C# 346 Further reading 364

13
Cross-Platform Application Development with MAUI 367
Technical requirements 368 Creating the project 374
Project overview 368 Understanding XAML structure 377
Windows version 368 The MVVM pattern 379
Android version 370 Adding CommunityToolkit.Mvvm 380
The models 381
xiv Table of Contents

The ViewModels 384 Summary392


The views 387 Questions392
Configuring our to-do application 391
Further reading 393

14
Microservices395
What are microservices? 396 Event-driven communication 412
The downsides of microservices, some Service resilience and fault tolerance 414
gotchas experienced by microservices, and
Service monitoring and observability 415
how they can be overcome and avoided 398
Service monitoring 416
Comparison between microservices and
monoliths400 Observability416

The design process for building Security417


successful microservices 401 CI/CD418
The application life cycle Microservice testing 420
management (ALM) of microservices 403 Scaling microservices 421
Microservice architecture patterns 405 Versioning and compatibility 423
Service registration and discovery 407 Microservices best practices and anti-
Service discovery 407 patterns424
Service registration 408 Microservices best practices 424
Microservices anti-patterns 425
Containerization and orchestration
of microservices 409 Case studies and real-world examples 427
Containerization409 Summary428
Orchestration409
Questions429
Serverless410 Further reading 429
API gateways 411

Assessments431
Chapter 1 431 Chapter 5 433
Chapter 2 431 Chapter 6 434
Chapter 3 432 Chapter 7 435
Chapter 4 432 Chapter 8 436
Table of Contents xv

Chapter 9 436 Chapter 12 440


Chapter 10 436 Chapter 13 441
Chapter 11 437 Chapter 14 443

Index445

Other Books You May Enjoy 466


Preface
Welcome to Clean Code in C#. You will learn how to identify problematic code that, while it compiles,
does not lend itself to readability, maintainability, and extensibility. You will also learn about various
tools and patterns, along with ways to refactor code to make it clean.

Who this book is for


This book is aimed at computer programmers with a good grasp of the C# programming language
who would like guidance on identifying problematic code and writing clean code in C#. Primarily,
the reader base will range from graduate to mid-level programmers, but even senior programmers
may find this book valuable.

What this book covers


Chapter 1, Coding Standards and Principles in C#, contrasts some good code with some bad code. As
you read through this chapter, you will come to understand why you need coding standards, principles,
methodologies, and code conventions. You will learn about modularity and the KISS, YAGNI, DRY,
SOLID, and Occam’s razor design guidelines.
Chapter 2, Code Review – Process and Importance, takes you through the code review process and
provides reasons for its importance. In this chapter, you are guided through the process of preparing
code for review, leading a code review, knowing what to review, knowing when to send code for review,
and how to provide and respond to review feedback.
Chapter 3, Classes, Objects, and Data Structures, covers the broad topics of class organization, documentation
comments, cohesion, coupling, the Law of Demeter, and immutable objects and data structures. By the
end of the chapter, you will be able to write code that is well organized and only has a single responsibility,
provide users of the code with relevant documentation, and make the code extensible.
Chapter 4, Writing Clean Functions, helps you to understand functional programming, how to keep
methods small, and how to avoid code duplication and multiple parameters. By the time you finish
this chapter, you will be able to describe functional programming, write functional code, avoid writing
code with more than two parameters, write immutable data objects and structures, keep your methods
small, and write code that adheres to the single responsibility principle.
xviii Preface

Chapter 5, Exception Handling, covers checked and unchecked exceptions, and NullPointerEx-
ception, and how to avoid them as well as covering, business rule exceptions, providing meaningful
data, and building your own custom exceptions.
Chapter 6, Unit Testing, takes you through using the Behavior-Driven Development (BDD) software
methodology using SpecFlow, and Test-Driven Development (TDD) using MSTest and NUnit. You
will learn how to write mock (fake) objects using Moq, and how to use the TDD software methodology
to write tests that fail, make the tests pass, and then refactor the code once it passes.
Chapter 7, Designing and Developing APIs, helps you to understand what an API is, and covers API
proxies, API design guidelines, API design using RAML, and Swagger API development. In this chapter,
you will design a language-agnostic API in RAML and develop it in C#, and you will document your
API using Swagger.
Chapter 8, Addressing Cross-Cutting Concerns, introduces you to using PostSharp to address cross-
cutting concerns using aspects and attributes that form the basis of aspect-oriented development. You
will also learn how to use proxies and decorators.
Chapter 9, AOP with PostSharp, explores using PostSharp to implement Aspect-Oriented Programming
(AOP). With our AOP framework, we will learn how to manage common functionalities such as
exception handling, logging, security, and transactions within our applications. But before that, let’s
put your brain to work to see what you have learned.
Chapter 10, Using Tools to Improve Code Quality, exposes you to various tools that will assist you in
writing quality code and improving the quality of existing code. You’ll gain exposure to code metrics
and code analysis, quick actions, the JetBrains tools called dotTrace Profiler and Resharper, and
Telerik JustDecompile.
Chapter 11, Refactoring C# Code, is the first of two chapters that take you through different types
of problematic code and show you how to modify it to be clean code that is easy to read, maintain,
and extend. Code problems are listed alphabetically through each chapter. Here, you will cover such
topics as class dependencies, code that can’t be modified, collections, and combinatorial explosion.
Chapter 12, Functional Programming, provides a detailed look at functional programming. You will learn
the difference between imperative and functional programming. Then you will learn about delegates,
anonymous methods, and lambda expressions Next, you move on to the topics of asynchronous
functional programming, recursion, and then finally, pattern matching.
Chapter 13, Cross-platform development with MAUI, delves into building applications with .NET
MAUI. You will learn the differences between the older Xamarin.Forms and the newer MAUI,
including using UI controls using the MVVM pattern, data binding, access device resources, data
access accessing remote microservices and Azure Functions, dependency injection, and styling.
Chapter 14, Microservices, looks at developing microservices using Azure Functions.
Preface xix

To get the most out of this book


Software/hardware covered in the book Requirements
Visual Studio 2019 Windows 10, macOS
Atom Windows 10, macOS, Linux: https://atom.io/
Azure resources Azure subscription: https://azure.microsoft.
com/en-gb/
Azure Key Vault Azure subscription: https://azure.microsoft.
com/en-gb/
The Morningstar API Obtain your own API key from https://rapidapi.
com/integraatio/api/morningstar1
Postman Windows 10, macOS, Linux: https://www.postman.
com/

It will be useful to have these in place before you start reading and working your way through the chapters.
If you are using the digital version of this book, we advise you to type the code yourself or access
the code from the book’s GitHub repository (a link is available in the next section). Doing so will
help you avoid any potential errors related to the copying and pasting of code.
You should have basic experience using Visual Studio 2019 Community Edition or higher, and basic
C# programming skills, including writing console applications. Many examples will be in the form
of C# console applications. The main project use ASP.NET. It will help if you are capable of writing
ASP.NET websites using the framework and core. However, don’t worry – you will be guided through
the steps that you need to go through.

Download the example code files


You can download the example code files for this book from GitHub at https://github.com/
PacktPublishing/Clean-Code-with-CSharp-Second-Edition/tree/main. If
there’s an update to the code, it will be updated in the GitHub repository.
We also have other code bundles from our rich catalog of books and videos available at https://
github.com/PacktPublishing/. Check them out!
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
xx Preface

Conventions used
There are a number of text conventions used throughout this book.
Code in text: Indicates code words in text, database table names, folder names, filenames, file
extensions, pathnames, dummy URLs, user input, and Twitter handles. Here is an example: “The
InMemoryRepository class implements the GetApiKey() method of IRepository. This
returns a dictionary of API keys. These keys will be stored in our_apiKeys dictionary member variable”
A block of code is set as follows:

using CH10_DividendCalendar.Security.Authentication;
using System.Threading.Tasks;

namespace CH10_DividendCalendar.Repository {
public interface IRepository
{
Task<ApiKey> GetApiKey(string providedApiKey);
}
}

Any command-line input or output is written as follows:

az group create --name "<YourResourceGroupName>" --location "East US"

Bold: Indicates a new term, an important word, or words that you see onscreen. For instance, words
in menus or dialog boxes appear in bold. Here is an example: “To create the app service, right-click
the project you created and select Publish from the menu.”

Tips or important notes


Appear like this.

Get in touch
Feedback from our readers is always welcome.
General feedback: If you have questions about any aspect of this book, email us at customercare@
packtpub.com and mention the book title in the subject of your message.
Errata: Although we have taken every care to ensure the accuracy of our content, mistakes do happen.
If you have found a mistake in this book, we would be grateful if you would report this to us. Please
visit www.packtpub.com/support/errata and fill in the form.
Preface xxi

Piracy: If you come across any illegal copies of our works in any form on the internet, we would
be grateful if you would provide us with the location address or website name. Please contact us at
[email protected] with a link to the material.
If you are interested in becoming an author: If there is a topic that you have expertise in and you
are interested in either writing or contributing to a book, please visit authors.packtpub.com.

Share Your Thoughts


Once you’ve read Clean Code with C# , we’d love to hear your thoughts! Please click here to
go straight to the Amazon review page for this book and share your feedback.
Your review is important to us and the tech community and will help us make sure we’re delivering
excellent quality content.
xxii Preface

Download a free PDF copy of this book


Thanks for purchasing this book!
Do you like to read on the go but are unable to carry your print books everywhere?
Is your eBook purchase not compatible with the device of your choice?
Don’t worry, now with every Packt book you get a DRM-free PDF version of that book at no cost.
Read anywhere, any place, on any device. Search, copy, and paste code from your favorite technical
books directly into your application.
The perks don’t stop there, you can get exclusive access to discounts, newsletters, and great free content
in your inbox daily
Follow these simple steps to get the benefits:

1. Scan the QR code or visit the link below

https://packt.link/free-ebook/9781837635191

2. Submit your proof of purchase


3. That’s it! We’ll send your free PDF and other benefits to your email directly
1
Coding Standards and
Principles in C#
The primary goal of coding standards and principles in C# is for programmers to become better at
their craft by programming code that is more performant and easier to maintain. In this chapter, we
will look at some examples of good code contrasted with examples of bad code. This will lead nicely
into discussing why we need coding standards, principles, and methodologies. As we delve into
coding standards, we will consider conventions for naming, commenting, and formatting source
code, including classes, methods, and variables.
A big program can be rather unwieldy to understand and maintain. For programming teams, getting to
know the code and what it does can be a daunting prospect, and they can find it hard to work together
on such projects. Because of this, we will look at how to use modularity to break programs down
into smaller modules that all work together to produce a fully functioning solution that is also fully
testable, can be worked on by multiple teams simultaneously, and is much easier to read, understand,
and document. And we’ll finish this chapter by looking at some programming design guidelines.
The following topics will be covered in this chapter:

• The need for coding standards, principles, and methodologies


• Naming conventions and methods
• Comments and formatting
• Modularity
• KISS
• YAGNI
• DRY
• SOLID
• Occam’s razor
2 Coding Standards and Principles in C#

After reading this chapter, you will be able to do the following:

• Understand how good code positively impacts projects


• Understand why bad code negatively impacts projects.
• Understand how coding standards improve code and how to enforce them
• Understand how coding principles enhance software quality
• Understand how methodologies aid the development of clean code
• Implement coding standards
• Choose solutions with the least assumptions

We’ll now look at the technical requirements that you will need as you work through this book.

Technical requirements
To work on the code in this book, you will need to download and install the latest version of Visual
Studio Community Edition. The IDE can be downloaded from https://visualstudio.
microsoft.com.

Note
There are no code samples for this chapter.

Good code versus bad code


Both good and bad code compile. There are reasons why code is labeled good code and bad code, as
shown in the following comparison table:

Good Code Bad Code


Proper indentation Improper indentation
Meaningful comments Comments that state the obvious
API documentation comments Comments that excuse bad code and commented-
out lines of code
Proper organization using namespaces Improper organization using namespaces
Good naming conventions Bad naming conventions
Classes that do one thing Classes that do multiple things
Methods that do a single thing Methods that do multiple things
Methods with less than 10 lines, and preferably Methods with more than 10 lines of code
no more than 4
Random documents with unrelated
content Scribd suggests to you:
The Project Gutenberg eBook of Arlette des
Mayons: Roman de la terre et de l'école
This ebook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this ebook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.

Title: Arlette des Mayons: Roman de la terre et de l'école

Author: Jean Aicard

Release date: January 3, 2022 [eBook #67099]

Language: French

Original publication: France: Ernest Flammarion

Credits: Véronique Le Bris, Laurent Vogel and the Online


Distributed Proofreading Team at
https://www.pgdp.net (This file was produced from
images generously made available by The Internet
Archive/Canadian Libraries)

*** START OF THE PROJECT GUTENBERG EBOOK ARLETTE DES


MAYONS: ROMAN DE LA TERRE ET DE L'ÉCOLE ***
JEAN AICARD
de l’Académie française
Président de l’Union française

Arlette des Mayons


ROMAN
DE LA TERRE ET DE L’ÉCOLE

1917

Chacun de nous travaille


à refaire la France.

PARIS
ERNEST FLAMMARION, ÉDITEUR
26, RUE RACINE, 26

Droits de traduction, d’adaptation et de reproduction réservés pour tous les pays.

ŒUVRES DE JEAN AICARD

Collection in-18 jésus à 4 francs le volume


ROMANS

Le Pavé d’Amour, 1 vol. — Roi de Camargue, 1 vol. — L’Été


à l’Ombre, 1 vol. — L’Ame d’un Enfant, 1 vol. — Notre-Dame
d’Amour, 1 vol. — Diamant noir, 1 vol. — Fleur d’Abîme, 1 vol.
— Melita, 1 vol. — L’Ibis bleu, 1 vol. — Tata, 1 vol. —
Benjamine, 1 vol. — Maurin des Maures, 1 vol. — L’illustre
Maurin, 1 vol.
POÉSIE

Les jeunes Croyances, 1 vol. — Rébellions, Apaisements, 1


vol. — Poèmes de Provence (cour. par l’Acad. fr.), 1 vol. — La
Chanson de l’Enfant (cour. par l’Acad. fr.), 1 vol. — Miette et
Noré (cour. par l’Acad. fr. Prix Vitet), 1 vol. — Lamartine (cour. par
l’Ac. Prix du budg.), 1 vol. — Le Livre d’heures de l’Amour, 1 vol.
— Visite en Hollande, 1 vol. — Le Dieu dans l’Homme, 1 vol. —
Au Bord du Désert, 1 vol. — Le Livre des Petits, 1 vol. — Jésus,
1 vol. — Le Témoin (Poème de France, 1914-1916), 1 vol. à 2 fr.
50. — Le Sang du Sacrifice, 1917, 1 vol.
DIVERS

La Vénus de Milo, 1 vol. — Alfred de Vigny, 1 vol. — Des


Cris dans la Mêlée, 1 vol.

THÉÂTRE

Au clair de la Lune (un acte en vers), 1 vol. — Pygmalion (un


acte en vers) 1 vol. — Smilis (4 actes en prose, à la Comédie-
Française) 1 vol. — Le Père Lebonnard (4 actes en vers
représentés à la Comédie-Française), 1 vol. — Don Juan, 1 vol. —
Othello, le More de Venise (5 actes en vers, représentés à la
Comédie-Française). — Portrait de Mounet-Sully, par Benjamin
Constant. 1 vol. 4 fr. — La Légende du Cœur (5 actes en vers
représentés au Théâtre Antique d’Orange et au Théâtre Sarah-
Bernhardt), 1 vol. — Le Manteau du Roi (5 actes en vers
représentés à la Porte-Saint-Martin), 1 vol. — Théâtre, tome I. —
Théâtre, tome II.

79922. — Imprimerie Lahure, rue de Fleurus, 9, à Paris.

Droits de traduction et de reproduction réservés pour tous les pays.

Copyright 1917,
by Ernest Flammarion.
ARLETTE DES MAYONS
Chacun de nous travaille
à refaire la France.
I
LE DÉPIQUAGE DU BLÉ

— Victorin, tu ne nous feras pas le chagrin d’épouser cette fille,


dit le père.
Les deux hommes s’en venaient de l’aire, où, depuis le lever du
soleil, sous les pieds de deux forts chevaux aveuglés d’œillères
closes, on avait foulé le blé. Maintenant le père et le fils ramenaient
à l’étable les bêtes lourdes de fatigue. Depuis l’aube, le père n’avait
pas prononcé dix paroles, et voici que, la matinée finie, — au
moment de goûter un peu de repos dans la maison aux volets pleins
et entrebâillés, — le paysan disait cela à son fils parce qu’il jugeait
que le moment en était enfin venu. Jamais auparavant il n’avait
touché ce sujet.
Le fils, qui ne fut pas étonné, ne répondit pas.
Tous deux marchèrent en silence vers l’étable obscure et fraîche,
dont la porte basse, qui encadrait du noir intense, avait un seuil de
soleil. Sous l’ombre des grands chapeaux de paille, leur face rasée
scintillait de sueur par endroits ; et, aussi, la sueur luisante se voyait
suspendue aux rudes soies de leur poitrine velue, dans l’écartement
des chemises de couleur. Tous deux avaient des pantalons de grosse
toile bise, retenus, malgré la chaleur d’été, par une « taïole » bleu et
rouge ; et, à travers les épaisses semelles de leurs souliers cloutés,
ils ressentaient l’ardeur de la terre.
Ils s’arrêtèrent, à dix pas de la maison, sous l’ombre de quelques
vieux mûriers, devant le puits coiffé d’un dôme et clos d’une solide
porte, comme une caverne d’Ali-Baba. En ce pays ardent, on
enferme l’eau comme un trésor. Victorin ouvrit la petite mais lourde
porte grinçante ; il repoussa de la margelle, dans le vide, le seau de
bois vermoulu, qui se balança sous la poulie de fer au bout de la
chaîne. Avec des crissements joyeux, le seau descendit vers la
fraîcheur du fond. Bientôt remonté, il fut vidé dans la conque où
nageait une grosse éponge. L’éponge en main, le jeune homme
mouilla abondamment les naseaux poussiéreux des deux bêtes.
Le père surveillait ce travail, et, quand il le vit terminé, il rentra
dans la maison, laissant à son fils le soin de conduire et d’attacher
les chevaux dans l’étable, devant les râteliers gorgés de foin.
A présent, les deux hommes étaient assis dans la salle obscure,
où le jour ne pénétrait que par le léger entrebâillement des volets
pleins et de la lourde porte. La pesante table rectangulaire touchait
le mur du fond. Aux deux bouts, le père et le fils se faisaient face. La
mère les servait. On entendait bourdonner une abeille. Ces gens, à
cette heure grave, vivaient en silence, appliqués à leur besogne, qui
était, pour les hommes, de se refaire des muscles en mangeant à
leur suffisance ; pour la femme, de les aider à réparer leurs forces
d’où dépendait la santé de la famille, la stabilité de la maison,
l’avenir commun. Ils mangeaient donc silencieusement, et elle les
servait sans rien dire. Et tous, sans avoir même à y songer, étaient
pénétrés de l’importance de cette minute, — car la famille Bouziane,
de l’aïeul, qui somnolait en ce moment dans une chambre au-dessus
de leur tête, jusqu’à ce Victorin, son petit-fils, en passant par le père
et la mère, tous, tour à tour, avaient été élevés dans le respect de la
vie ordonnée et dans l’amour du travail, loin des déclamations du
siècle.
La famille Bouziane ! on la citait comme un exemple
extraordinaire de volonté et de probité simples. On disait d’elle
couramment : « Ça, c’est des gens d’ancien temps ; » ou : « à
l’ancienne mode ; on n’en fait plus de comme ça. »
Les Bouziane, depuis des siècles, n’avaient jamais quitté le pays.
Par les hommes, ils descendaient à coup sûr des Sarrazins,
longtemps et fortement établis non loin des Mayons, à La Garde-
Freinet, au sommet de la chaîne des Maures, dans la Provence du
Var.
Aujourd’hui, cette famille, ayant abandonné les hauteurs de La
Garde-Freinet, habitait, dans la plaine onduleuse, sa bastide,
largement et solidement assise sur un terrain incliné à peine vers le
midi, entre Gonfaron et les Mayons.
Les Mayons, ce mot signifie : les maisons. Maisons paysannes,
asiles nobles d’antiques roturiers ; ils étaient là sur leur sol d’origine,
à moins d’une lieue de Gonfaron, presque au pied du massif des
Maures, à la lisière des bois de pins qui dévalent le versant nord de
la chaîne, où les arrête la grande culture des vignes.
Les Bouziane mangeaient. Les mâchoires aux blanches dentures
broyaient, avec lenteur, un pain sec qui « crenillait » allègrement. Le
chien, un chien courant, bon gardien de la demeure, les considérait
assis sur sa queue.
— Ne vous occupez pas de lui, je lui ai donné. Il a mangé à sa
suffisance, dit la mère Bouziane.
Elle apportait aux deux hommes les radis bien frais, les premières
pommes d’amour, le lard grillé ; puis elle battait sa demi-douzaine
d’œufs, et apprêtait la poêle où allait cuire et se dorer l’omelette aux
oignons — la moissonneuse.
Quand ils auraient fini, elle monterait sa bouillie au vieux, là-
haut, qui, depuis une année, s’était couché pour mourir et qui n’y
parvenait pas.
Ensuite, comme de juste, elle penserait à elle-même ; et,
tranquille enfin, prendrait seule son repas, mieux à son aise que s’il
lui avait fallu, s’étant mise à table avec les travailleurs, s’interrompre
de manger et se lever à toute minute pour chercher une chose ou
l’autre.
— Ça ne serait pas sain, songeait-elle.
Et nos pères avaient raison de tenir à l’usage, aujourd’hui perdu,
de faire manger la femme après les hommes, sans l’offenser, et bien
au contraire, c’est-à-dire lorsqu’enfin elle peut prendre sa nourriture
en toute tranquillité.
Sur cette terre de souffrance où il faut travailler, le travail, si on le
distribue avec intelligence, se fait plus vite et mieux, pour le plus
grand avantage de tous et de chacun. Telle était du moins la pensée
des Bouziane, depuis des siècles, — depuis le jour où leurs ancêtres
sarrazins étaient venus en terre de Provence, se mêler aux
Liguriennes et fonder une race toujours vivante et prospère.
Pendant tout le repas, le père et le fils n’échangèrent pas cinq
paroles. Ils mangeaient et buvaient en silence, tandis que, dans
cette ombre, leurs corps apaisés, exhalant le soleil du matin,
reprenaient fraîcheur lentement.
Le père ne s’étonnait point que le fils n’eût pas répondu sur-le-
champ à son objurgation sévère. Il comptait que Victorin verrait son
« devoir » (il se servait de ce mot) et qu’il s’y tiendrait, une fois
averti. Et puis, les choses de sentiment, de passion, d’intérêt même,
on n’y saurait penser toujours. Quand on travaille « chez nous » —
on est tout au spectacle de ce que l’on fait. Pour l’heure, les
hommes mangeaient. Tout le matin, on avait « foulé », tout à l’heure
on foulerait encore ; et dans leur tête — pleine de la vision d’une aire
qui flamboyait sous des éparpillements de longues pailles d’or,
entremêlées et rigides, et où tournent inlassablement les deux
chevaux au train monotone — il n’y avait pas place pour les
raisonnements.
Ils étaient allés se coucher un instant à l’ombre des mûriers, près
du puits, faire un peu de sieste. L’un s’était dit : « Il ne l’épousera
pas », l’autre : « Bien sûr que je l’épouserai » ; mais c’était tout ; cela
s’était murmuré en eux une fois ou deux, et cela, aussitôt, avait été
couvert par le frappement du pied des chevaux dans la paille où le
grain jaillit sourdement de l’épi… « Hue ! le Rouge ! — T’arrête pas, le
Blanc ! Hue donc et fais courage ! » Puis un peu de somnolence était
venue ; et quelque chose comme une nuit claire et douce avait voilé
à demi le tableau ensoleillé qu’ils avaient tous deux sous le crâne.
La sieste finie, ils reprirent leur besogne ; et cela ne changea rien
en eux, puisque, même, durant leur repos, ils avaient revu en
imagination ce qu’ils revoyaient maintenant en réalité. Sous les pieds
des chevaux, les longues pailles rigides et fines bruissaient, et, tout
le long de chacune d’elles, le soleil allumait une fine aiguille de feu ;
et ces millions d’aiguilles longues, ces traits de feu, sans cesse se
croisaient et se décroisaient… Au milieu de cet embrasement, les
chevaux viraient, viraient, dépiquant le blé encore et encore.
Victorin, au centre de l’aire, faisait passer les longes derrière son
dos, de sa main droite dans sa gauche ; le père Bouziane, la fourche
au poing, patiemment, lançait sous le pied des bêtes de nouvelles
gerbes, les éparpillait, les renouvelait sans cesse ; et, ainsi occupés,
le père et le fils, tous deux suaient, brûlants de vie, dans un
flamboiement de lumière opulente et de joie physique.
Le soir vint ; le feu torride cessa de tomber du ciel, comme
ruissellent les grains d’un crible, sur la terre crevassée ; une douceur
se fit, qui gagna cultures et bois comme une marée les rivages ; le
jour, si longtemps exaspéré, s’apaisa, se mêla enfin de rêverie ; tout
ce que, tantôt, il enveloppait, accablant, ne pouvait alors penser qu’à
lui ; maintenant les choses se reprenaient ; elles se ressaisissaient,
faisaient retour sur elles-mêmes ; la vie individuelle des plantes et
des êtres se retrouvait ; tous les puits clos de la plaine s’ouvraient à
cette heure pour donner aux bêtes et aux gens un peu de leur trésor
d’obscure fraîcheur ; une poulie lointaine criait faiblement, avec le
charme d’un appel d’oiseau qui cherche un abri pour la nuit ; c’était
l’heure où les amoureux, revenant du travail, rencontrent, près des
margelles, les belles fiancées qui vont quérir l’eau pour le repas du
soir…
Alors les deux Bouziane ramenèrent leurs chevaux à l’étable ; et,
comme ils arrivaient près du puits, Victorin, répondant enfin aux
paroles que son père avait prononcées le matin, lui dit :
— Et pourquoi, mon père, que je ne l’épouserais pas, Arlette ?
Le père Bouziane éprouva dans son cœur une secousse.
Cependant il n’en fit rien voir.
— Plus tard, dit-il, s’il le faut, je te dirai ça ; pour l’heure, réfléchis
à ma volonté, et tu verras bientôt par toi-même les raisons pourquoi
ce que je t’ai dit — je te l’ai dit.
Sans parler davantage, ils soupèrent — puis, assis sur le banc de
pierre, au seuil de la ferme, fumèrent leur pipe sous les étoiles.
II
LA VIEILLE MAISON PAYSANNE

La famille Bouziane était donc une des plus connues de la région


des Maures. A la fin du XVIIIe siècle, cette famille était encore établie
à La Garde-Freinet, sur le sommet de la chaîne des Maures, où
longtemps les Barbaresques eurent leur fort principal. Le hameau
des Mayons s’appelait encore les Mayons du Luc et n’avait pas
d’importance. Il en prit le jour où Marius, le trisaïeul de Victorin,
ayant acquis dans la plaine une assez grande étendue de terrains —
boisés de pinèdes — abandonna La Garde-Freinet pour sa maison
des plaines, alors en ruines, qu’il fit restaurer, et qui se nommait la
Salvagette.
Cet événement de famille se passait vers l’an 1798.
Et César Bouziane, le bisaïeul de Victorin, vivait encore, il y a
quelque quarante ans, aux Mayons, où, paysan de vieille race, il était
connu cependant sous le nom banal du « vieux soldat ».
Il avait fait la campagne de France en 1815 ; jeune conscrit, il
s’était battu à Waterloo. Médaillé de Sainte-Hélène, il n’était pas
médiocrement fier de ce titre. Il aimait à le rappeler souvent aux
Mayonnais attentifs, réunis le dimanche à l’entrée du hameau,
devant l’atelier du forgeron, sur la terrasse naturelle qui domine la
plaine. Son fils, le grand-père de Victorin, avait hérité de lui trois
reliques qu’il vénérait, son casque, son sabre et sa médaille.
C’est sous ces trois reliques, accrochées au mur de sa chambre,
que, couché depuis l’an dernier, le grand-père reposait, dans un
étrange sommeil presque continu. Il ne s’éveillait que pour prendre
de légers repas apportés par sa belle-fille.
Le bisaïeul, le soldat du premier Empire, avait transmis à son fils
le culte de Napoléon. Et de ses rudimentaires idées sur la guerre et
la paix, sur les devoirs militaires et civiques des Français, quelque
chose, à la longue, avait passé dans l’esprit de ses enfants, et aussi
dans l’esprit de la plupart de ses concitoyens mayonnais. En un mot,
certains enthousiasmes de l’ancêtre faisaient partie des traditions de
la petite cité.
Le braconnier Arnet, figure locale très caractéristique, fils d’un
insurgé de 51, prenait pour lui-même ce titre parce que, à cette
époque, âgé de seize ans, il avait, de la part de son père, porté un
mot d’ordre à Collobrières. Volontiers, en sa seconde jeunesse, il
tenait tête au père César, et souvent dans l’unique intention de le
pousser, par la contradiction, à de nouveaux récits de batailles, à des
emportements généreux qui remplissaient d’aise les auditeurs.
L’éducation des peuples se fait heureusement en partie de ces
bavardages héroïques, aux heures de loisir. Ceux qui ont beaucoup
vu, beaucoup agi, beaucoup appris par les voyages et par le contact
avec les hommes, disent bien des choses utiles à la formation des
âmes populaires, et que les instituteurs ne rencontrent pas dans
leurs livres. Ce que, surtout, ils ne rencontrent pas dans les livres,
c’est l’accent de l’expérience directe, c’est l’éloquence saisissante
d’un témoin, qui se trouva jouer un rôle, si humble qu’il ait pu être,
en des circonstances historiques.
Dans l’atelier du forgeron des Mayons, le dimanche soir, ou bien
les jours de pluie quand le travail des champs est rendu impossible,
il fallait, par exemple, entendre autrefois le vieux César Bouziane
raconter, en provençal, la charge des dragons de Waterloo.
— Figurez-vous, mes amis, que j’ai vu à Waterloo, les lanciers, les
cuirassiers, les cavaliers enfin, le sabre en l’air, charger en criant.
Ceux d’entre vous qui, à la chasse, mes amis, sautent de surprise et
comme de peur, et perdent la tête quand une compagnie de perdrix
leur part tout à coup dans les jambes avec un grand grondement de
mistral, ceux-là seraient tombés morts d’épouvantement s’ils avaient
entendu ronfler cette charge. Figurez-vous que vous êtes dans une
plaine, une grande plaine, battue comme un tambour par des mille
et mille chevaux, dont chacun, comme de juste, n’a pas moins de
quatre pattes, de quatre sabots ferrés, et imaginez quel roulement
de tonnerre ! Sur tous ces chevaux dont les pieds frappent comme
autant de baguettes sur la terre qui tremble toute, les cavaliers
crient : « Vive l’Empereur ! » Ça commence comme ça, et c’est
magnifique. Je les ai vus passer. Mais les chefs avaient mal calculé
l’affaire. L’Empereur était abandonné du bon Dieu, faut croire, car,
d’habitude, il savait tout et connaissait son champ de bataille comme
vous connaissez la plaine des Mayons. Il les visitait d’avance, ses
champs de batailles, il s’arrangeait avec la carte de géographie ; il les
connaissait enfin par sa manière de génie à lui. Mais, cette fois, il y
eut une faute, et cette charge galopante qui, avec toutes ses
crinières et ses queues en l’air comme des drapeaux, ronflait comme
un torrent de montagne, arriva tout-à-coup devant un grand fossé
profond, un chemin creux auquel on n’avait pas pensé ! Aï ! aï ! mes
amis ! j’ai vu ça !… Lorsque tant de chevaux sont lancés, l’homme qui
tombe n’est pas à la fête, pensez donc ! sous tant de pieds qui
galopent au-dessus de lui. Il trouve le temps long, celui-là, vu
qu’une charge de cavaliers c’est comme un coup de mitraille sorti en
paquet du canon. Ça ne s’arrête qu’à l’endroit où c’est au bout… Ça
roule, ça roule, ça gronde, ça tintamarre sourd. Le torrent de
montagne emporte les barrages et tombe en cascade dans les
creux ; — et c’est bien ce qui arriva. Le premier rang, tout en un
coup, se trouve devant le grand fossé ; il le voit, mais il a, derrière
lui, tous les autres qui le poussent. Il faut sauter. Quel saut ! Les
premiers chevaux lancés écorchent la rive contraire avec leurs pieds
de devant, et, renversés en arrière, ils tombent au fond du trou sur
leurs cavaliers, qu’ils écrasent ; et le second rang, déjà, a roulé et
s’est renversé sur le premier. C’est le grand saut dans la mort. Et,
par centaines et centaines, on tombe les uns après les autres, les
uns sur les autres, jusqu’à ce que le fossé soit comble, et que tout
ce qui reste, le peu qui reste, puisse passer, comme qui dirait sur un
pont fait d’hommes et de chevaux mêlés, qui remuent encore ! Et
voilà pourquoi le grand Napoléon fut vaincu à Waterloo, pour ça et
bien d’autres raisons que vous verrez dans l’histoire.
— Votre Napoléon, disait tout à coup Arnet, a fait le malheur de
la France !
— Tais-toi, jeune homme, répliquait le vieux César. Tu ne sais pas
ce que c’est que la gloire. La France, avant Waterloo, l’a connue, la
gloire. Nous l’avons perdue. Elle reviendra. Nous l’attendons. Mais,
pour ça, il faudra tous savoir souffrir en bons soldats. J’ai élevé mon
fils dans ces idées. Il a fait la campagne de Crimée, c’est Bouziane
après Bouziane. Quand je ne serai plus là, il vous en parlera de la
Crimée, comme je vous parle de Waterloo. Et il parlera à son fils
comme je lui ai parlé à lui.
— La France, répliquait Arnet goguenard, ne fera plus la guerre ;
elle sait trop ce que ça coûte.
— Ça, je veux bien, répondait César d’un air bonhomme, par
malheur, on la lui fera, la guerre. Et il faudra bien qu’elle sache se
défendre.
Et Arnet ripostait :
— Pour ce qui est de se défendre, j’en suis.
Et, avec un bon sens puissant qui allait au fond des choses :
— Voyez-vous, maître Bouziane, disait le jeune Arnet, le malheur,
c’est qu’il y ait des abominations permises aux empereurs, aux rois,
aux maîtres des peuples ; des abominations qu’on dit même louables
de leur part, tandis que ces mêmes choses sont défendues à tous les
citoyens. Alors on ne peut plus comprendre. A la guerre, on tue, on
vole, on brûle tout. Pourquoi est-ce permis ? Quand je pose un piège
pour prendre six moineaux, et m’en nourrir — arrivent des pèlerins
(Arnet désignait toujours ainsi les gendarmes) qui me font leur
« procès-barbal » — mais, à vos empereurs, il est permis de faire
tuer des hommes et même de nous manquer de parole quand ils ont
juré qu’ils tiendraient leurs belles promesses. A la guerre, on fait
tout ce qui m’est défendu et qui est défendu avec raison. Et, tant
que ce sera comme ça, vous trouverez des révoltés comme moi pour
dire à vos Napoléon que ce qu’ils font ne leur est pas plus permis
qu’à moi. Et eux ils se décorent de leurs mauvaises actions.
— Ils en ont fait de bonnes, disait César Bouziane. Napoléon a
fait le code, le livre de nos lois, dont la France avait bien besoin.
— Il n’est pas bon partout, le code, grommelait Arnet. Et puis,
parce qu’il avait fait un bon livre, il avait le droit de faire la guerre
nuit et jour ? Ah ! je vous dis, la guerre pour la défense, oui ! celle-là
tant qu’on voudra !
Tels étaient, il y a quelque quarante ans, presque chaque
dimanche, les thèmes des conversations, cent fois répétées en
public, entre César Bouziane, le vieux soldat, et Arnet, le braconnier,
l’insurgé de 1851.
Puis César Bouziane mourut. Alors son fils (le grand-père de
Victorin) qui s’était tu tant qu’avait vécu l’ancêtre, eut son tour ; et,
sans cesse, il redisait la charge légendaire de Waterloo ; puis les
tranchées de Sébastopol, où il avait fait vaillamment son devoir de
soldat français.
— Pour ce qui est des Russes, voyez-vous, disait-il, c’était comme
des frères. On se battait quand venait l’heure, mais dans les
moments où on ne se battait pas, on se passait du tabac ou un bon
coup de vin — parce qu’on n’était pas des sauvages. Et puis, nous
autres, Français, nous sommes comme ça. Nous avons pitié des
hommes. On a bien assez de misère sur terre, par le travail, et les
accidents, et les maladies ! Oui, il ne faut pas être des sauvages. Et,
cependant, il faut se défendre. Le travailleur ne travaille pas pour les
voleurs.
— Je suis bien plus avec vous qu’avec votre pauvre père, disait
Arnet.
Telles étaient les idées générales transmises par les Bouziane à
toute une région.
Et le jeune Victorin, le dernier Bouziane, savait par cœur toutes
les histoires de ses deux pères-grands. Il ne les répétait pas, ce
n’était pas dans sa manière. Les histoires ne sont vraiment bonnes
que lorsqu’on a eu une part d’action dans les événements qu’on
raconte.
Lorsque Victorin parlait, il ne parlait, comme son père, que de
chasse ou de travaux rustiques ; mais, au fond de son cœur muet de
paysan, il avait une image vivante, quoique lointaine, de la patrie et
de la justice.
Et c’est ainsi qu’en Victorin, jeune et actif, revivait l’âme
essentielle de son vieux grand-père, qui, là-haut, au-dessus de la
salle commune, dans la bastide des Bouziane, sommeillant immobile
sur son lit, prenait, avec un vague sentiment de satisfaction, son
étrange repos, qui lui semblait un acompte sur la mort bien gagnée.
III
L’ANARCHISTE ET LA SUFFRAGETTE

M. Augias a soixante-cinq ans ; il a été instituteur ; un petit


héritage lui est échu. Il serait resté maître d’école si sa santé le lui
eût permis, parce qu’il aimait passionnément sa fonction dont il a
gardé une haute idée. M. Augias lit beaucoup ; il apprend tous les
jours ; c’est un philosophe. Aujourd’hui, sans faire mauvais ménage
avec le curé, M. Augias est devenu, étant de bon conseil, quelque
chose comme le recteur laïque du pays, qui s’en trouve bien.
A l’orée d’un bois de châtaigniers qui grimpe jusqu’à mi-côte la
pente des Maures, tout près des Mayons, le cabanon de M. Augias,
blanc comme neige, rit au soleil par ses trois fenêtres, une au rez-
de-chaussée à côté de l’unique porte, les deux autres au premier
étage. Une terrasse ombragée par une treille prolonge au dehors,
pour ainsi dire, la pièce d’en bas, qui est à la fois cuisine, salle à
manger et salon. De cette terrasse, comme des Mayons même, on
domine l’admirable vallée de l’Aille, toute l’étendue qui, de l’ouest à
l’est, va de Pignans à Vidauban. Presque en face, se dresse le Luc et
son voisin, le vieux Cannet du Luc, en sentinelle sur son cône bleuté.
La plaine, couverte de pins et de chênes-lièges, ne montre, à qui la
regarde de la terrasse des Mayons, que les cimes moutonnantes de
ses forêts ; elle apparaît de là comme un vaste lac ondoyant et
fasceyant au soleil. Cette mouvante verdure cache un sol montueux
par places, ravins et collines dont on s’étonne en les parcourant. La
plaine ne laisse pas deviner non plus à qui la voit de haut les
cultures spacieuses, voilées de monticules et de pinèdes.
Au sud-est se dressent les derniers contreforts des Maures, les
rochers du Muy et de Roquebrune, sous lesquels commence la plaine
de l’Argens ou de Fréjus. Par-dessus ces rochers, et au-dessus de
toute cette admirable plaine, flotte une lumière chargée d’une sorte
d’irisation constante ; c’est le fluide scintillement d’une impalpable
poussière radiante, et où les indigènes reconnaissent le voisinage de
l’atmosphère maritime. L’imperceptible vapeur qui s’exhale de la mer,
comme la chaude haleine qu’expirent les naseaux d’un cheval,
presque toujours flotte épandue au-dessus de ce lac de verdure
mouvante ; et, dans cette poudre dorée, dans cet air diamanté, la
lumière est comme multipliée, le soleil comme répété tout entier
dans des myriades d’infiniment petites étincelles. Ainsi, durant l’été,
un flamboiement formidable danse au-dessus des cimes vertes,
surchauffées, d’où il semble à toute heure que va jaillir l’incendie.
Toute cette splendeur s’apaisait, vers cinq heures, en cette fin de
Juillet, lorsque maître Arnet, le vieux braconnier, heurta du bâton la
porte ouverte de maître Augias.
— Eh ! mestre ? y a degun ? N’y a-t-il personne ? Eh ! maître ?
— Holà ! holà ! Arnet, un peu de patience.
Maître Augias, le vieil instituteur, qui avait aimé son métier, et
l’avait quitté à regret pour d’impérieuses raisons de santé, en parlait
souvent, s’inquiétait des écoles, de leur avenir, des méthodes
nouvelles. Ce qu’il y avait en lui de meilleur, c’était son clair bon
sens. Et le bon sens étant la qualité maîtresse d’Arnet, ces deux
hommes très différents avaient fini par se rapprocher. Ce fut à la
grande surprise de tout le pays, car il fallait aller tout au fond des
choses pour comprendre quel lien rattachait « Mossieu » Augias, de
bon sens sévère, à maître Arnet, de bon sens jovial. Ils s’entendaient
fort bien, et sans qu’on sût bien pourquoi, ou plutôt parce que,
inégaux par la culture, ils se reconnaissaient pourtant de même race.
— Eh ! monsieur Augias ?
La voix répéta :
— J’y vais ! Un peu de patience, Arnet.
Arnet, — c’est la forme provençale d’Ernest.
Un pas lent retentit. M. Augias, traînant un peu ses jambes
lourdes de rhumatismes, apparut au bas de l’étroit escalier. De sa
calotte de curé, qui cachait sa calvitie, s’échappaient en franges
quelques cheveux blancs. Son visage ovale, un peu jauni, rasé
proprement, exprimait la paix de l’âme, avec une certaine tristesse
habituelle, que fréquemment éclairait un sourire aussitôt disparu.
M. Augias était veuf. Il disait parfois qu’il avait perdu un fils
chéri ; mais ce fils, Augustin, aujourd’hui âgé de vingt ans, n’était
pas mort ; il avait « mal tourné ». Fier de la petite instruction primaire
qu’il avait reçue dans une école du Var, dirigée jadis par son père, il
s’était cru poète et romancier. Il répandait en strophes puériles, mal
cadencées et mal rimées, une âme artificielle où s’alliait à un
romantisme attardé un futurisme incompréhensible. Son âme vraie
n’était que sottise ambitieuse, mégalomanie enfantine, révolte
anarchique et servilisme prudent. Son père, qui ne voulait plus le
voir, se maudissait lui-même de n’avoir pas su donner à son propre
fils une règle morale ; mais il n’y avait plus rien à tenter pour sauver
le jeune homme, dont il n’avait plus de nouvelles depuis de longs
mois. Le jeune gaillard était resté quelque temps à Paris ; et déjà il
se sentait vaincu par la vie, déclassé, perdu. Par orgueil, il n’osait
plus revenir dans sa ville natale. Il était, à l’heure présente, garçon
de bureau dans une banque, à Marseille. Son service consistait à
balayer les salles tous les matins, et à coucher, la nuit, dans une
soupente, d’où il pouvait, par un judas, surveiller les salles, qu’à la
moindre alerte il éclairait en mettant le doigt sur un bouton
électrique. Pour remplir utilement cet emploi, sa poésie et tous ses
pauvres souvenirs scolaires lui étaient parfaitement inutiles. Mais, le
dimanche, il se promenait en veston noir trop court, avec une
cravate de soie rouge, et la canne à la main. Dans ce costume, il
était l’orgueil des bars de banlieue. Il y récitait, devant des nervis
éblouis, des poésies enflammées, traversées par tous ses mauvais
désirs de paresseux sans espérance.
M. Augias savait tout cela vaguement ; et c’était la cause secrète
des tristesses du vieil instituteur honnête homme.
— Qu’est-ce qui vous amène, mon brave Arnet ? Asseyez-vous.
Arnet ôta son feutre aux bords dentelés par l’usure, et s’assit sur
une des quatre chaises de paille qui entouraient la table de bois
blanc, bien frottée.
M. Augias était son propre serviteur ; il faisait son lit tous les
matins de bonne heure, mettait en ordre sa maison, raccommodait
ses vêtements et son linge, allait aux provisions, préparait ses repas.
Arnet, dans sa hutte construite de ses mains, beaucoup plus haut
sur la pente des Maures, dans la forêt de châtaigniers, se livrait à
des occupations du même genre et cette conformité d’habitudes le
rapprochait encore d’Augias. Seulement, l’habitation d’Arnet était un
peu celle d’un sauvage ; l’intérieur d’Augias était celui d’un civilisé
rustique.
Lorsque Arnet fut assis, M. Augias ouvrit une armoire, prit deux
tasses à fleurs jaunes et rouges et les plaça sur la table. Sur le
fourneau, un « toupin » vernissé était en train de bourdonner la
chanson de l’eau qui dansote ; dans l’eau bouillante, il jeta trois
cuillerées de café et retira le toupin du feu ; puis il y versa une
cuillerée d’eau froide, — ce qui fit tomber au fond le marc alourdi…
— Le bon café à la sarrazine, comme le faisaient nos
grand’mères, dit Augias.
— Il n’y a rien de meilleur, fit Arnet. Nous ne sommes pas de ces
gens à qui il faut des cafetières à compartiments, monsieur Augias.
Votre café est digne d’un roi.
— Maurin des Maures en a souvent goûté, de mon café,
prononça M. Augias. Et c’était le roi de nos petites montagnes, celui-
là !
— Et c’était mon cousin second, dit Arnet… Je suis
conséquemment le cousin d’un roi et d’un roi républicain, dont le
souvenir réjouira encore les enfants de nos enfants ! Je l’ai suivi
souventes fois à la chasse, ce Maurin, acheva Arnet en souriant. Il
avait de bonnes idées et de bonnes jambes.
— Et du bon sens, dit M. Augias.
— Quand je parle, poursuivit Arnet, il m’arrive, beaucoup
souvent, de m’apercevoir que je répète des choses que Maurin a
dites, et, alors, par là, je suis sûr de bien dire et d’être approuvé. Et,
si aujourd’hui, je viens vous voir, c’est justement pour vous parler
comme il aurait pu le faire, monsieur Augias. Et je viens de la part
de mon ami Bouziane.
— Je vous écoute.
— Voilà, dit Arnet en humant son café et en allumant sa pipe ; le
fils Bouziane…
— Victorin, souligna M. Augias.
— Oui, Victorin, qui est fils unique, avance vers l’âge de se
marier, quoiqu’un peu jeune, n’ayant que vingt ans, comme vous
savez, et c’est un brave « pitoua ».
— Comme il nous en faudrait beaucoup, affirma M. Augias avec
toute sa gravité.
— Oui, dit Arnet, il est brave, il travaille comme pas un, il est de
bonne tournure ; pour tout dire en un mot, il a de bons principes,
comme vous me l’avez répété quelquefois.
— Eh ! dit Augias, parce qu’il a appris b, a, ba, et deux et deux
font quatre, il ne « s’en croit » pas pour cela, comme tant d’autres ; il
ne décide pas sur les choses qu’il ne connaît point, et il se garde de
se croire aussi savant que les plus grands savants. Je lui ai entendu
dire que, selon lui, on ne doit faire députés que des gens capables
de comprendre les lois qui existent, puisqu’ils sont appelés à en
fabriquer de nouvelles, et il ajoutait qu’un charretier est un homme
qui doit savoir mener chevaux et charrette.
— Pour sûr, dit Arnet grave à son tour ; seulement, il y a
beaucoup de ces conducteurs pour rire, assis sur « l’asseti » des
chars-à-bancs, avec les rênes lâches, — et qui croient mener leur
bête, cheval, mulet ou âne ; — lorsque, bien entendu, c’est leur
bête, — cheval, âne ou mulet — qui les conduit à la foire, par la
force de l’habitude.
— Si nous en revenions à ce que vous voulez dire de Victorin,
hein, ami Arnet ?
— Patience ! fit Arnet, je sais très bien où je vais en arriver,
monsieur Augias ; mais, quand je me rends au travail à travers
champs, j’ai coutume, s’il me part « une » lièvre ou un perdreau
entre les jambes, de le mettre dans ma carnassière. C’est tant de
pris en passant ; et, de même, si en marchant vers ce que j’ai à vous
dire, je rencontre une bonne idée sur ma route, je m’y arrête un
peu ; qu’elle vous parte des pieds, ou qu’elle parte des miens… Il
m’arrive même d’y perdre un peu trop de temps comme pour la
perdrix ou la lièvre quand je vais à mon travail, mais je n’ai jamais
pu me corriger d’être curieux, pas mal bavard et enragé braconnier.
Ici, M. Augias sourit, mais il se garda de répondre, car il
connaissait l’éloquence de son ami, et qu’elle pourrait fort bien
l’entraîner à parcourir, de digression en digression, le champ sans
limite de la sagesse populaire.
Un assez long silence se fit.
— Oui, déclara tout à coup Arnet, répondant à ses propres
rêveries, ce Victorin est un gaillard. Il a le cœur d’un lion et les
jambes d’un lièvre, — les jambes que j’avais quand je faisais courir
les pèlerins…
— Nous y voilà, pensa Augias. Il va me conter un de ses bons
tours de braconnier incorrigible.
Mais Arnet ajouta :
— Je vous dirai une autre fois une de mes histoires de
gendarmes… celle, par exemple…
— C’est cela, une autre fois, Arnet, une autre fois ! Pour
aujourd’hui, qu’avez-vous à me dire de Victorin ?
— J’ai à vous dire que les Bouziane ont besoin de vos conseils,
c’est-à-dire qu’ils n’en ont pas besoin pour eux, mais que vous en
donniez à leur Victorin. Eux, ils savent très bien ce qu’ils veulent et
que vous serez d’accord avec eux, et que vous conseillerez ce
garçon qui prend le chemin qu’il faut pour faire une bêtise, des
grosses. Alors, le père de Victorin m’a dit comme ça, m’a dit :
« Arnet, tu verras un de ces jours M. Augias qui est ton ami — et
cette parole de Bouziane me fait honneur, monsieur Augias — et
quand tu verras M. Augias, ton ami, dis-lui de nous aider et qu’il
montre à notre Victorin où est son devoir. »
— Et à quelle occasion, Arnet ?
— A l’occasion du grand amour qui le tient pour une fille qui n’est
pas celle que son père voudrait lui voir épouser.
— Et qui son père voudrait-il lui voir épouser ?
— Martine Revertégat.
— Bonne affaire, ça ! Ces Revertégat sont des gens à l’ancienne.
— Comme les Bouziane ; la vraie race d’ici. C’est souche de bon
bois, vieille vigne de pays ; rien des « américains ».
Sur ce mot, il y eut un silence, pendant lequel les deux hommes
revirent le temps d’avant le phylloxéra, l’époque où les ceps
américains n’avaient pas envahi la Provence, où la vieille vigne
française exempte de maladie traînait ses sarments paresseux sur la
terre provençale et donnait un vin autrement joyeux que celui des
ceps d’Amérique, qui ont trop voyagé et sont d’une autre terre. Le
vin d’aujourd’hui, on le travaille et on le fraude en vue du rapport et
non plus pour la joie de le produire et de le boire !
— Tout ça ne dit pas quelle est la gueuse que Victorin peut
préférer à Martine, interrogea enfin M. Augias.
— Il lui préfère Arlette des Mayons, dit Arnet gravement.
M. Augias, qui s’était levé, eut un sursaut :
— Misère de moi ! Arlette ! une Arlette !… qu’on appelle des
Mayons, et qui n’en est pas, des Mayons, puisque son père était un
gavot paresseux, venu un jour chez nous avec sa femme pour
s’employer à la récolte des châtaignes — et qui, jusqu’à sa mort
d’ivrogne, est resté dans le pays pour y donner l’exemple de la
paresse et de l’ivrognerie ! Il est mort de ses vices, le pauvre bougre,
et ce fut un bon débarras ; mais il nous a laissé de la graine

You might also like