React Naming Conventions You should follow as a Junior Developer - clean-code

CoderOne
28 May 202312:53

Summary

TLDRThis video script offers essential React naming conventions for developers, focusing on clean, readable, and maintainable code. It covers directory and file structure, naming for pages, components, hooks, variables, and more. The script emphasizes using PascalCase for pages and components, camelCase for files and variables, and underscores for constants. It also advises on descriptive function and hook names, and leveraging linters to enforce consistent naming conventions, ensuring a harmonious codebase for team collaboration.

Takeaways

  • 📂 The script emphasizes the importance of a well-structured directory for React projects, with main folders like 'src', 'public', and specific files for configurations.
  • 🔍 Inside the 'src' folder, there should be organized sub-folders such as 'assets', 'pages', 'components', 'hooks', 'services', 'store', 'typings', and 'utils' for better code maintenance and readability.
  • 📝 For 'pages', use PascalCase for folder and file names to highlight their importance as the main entry points of the application.
  • 📦 Components should be reusable and kept in their respective folders, with an 'index' file as the main entry point for each component.
  • 🔑 Hooks should be named descriptively and prefixed with 'use' to indicate their purpose and to follow React's naming convention.
  • 🛠 Functions and variables should have descriptive names to convey their functionality at a glance, using camelCase for file names and variables outside of the 'pages' folder.
  • 📈 For props, use PascalCase and define them using interfaces for clarity and reusability across components.
  • 📝 When naming interfaces or types, avoid starting with an 'I' prefix as it is no longer necessary with TypeScript, and use PascalCase instead.
  • 🔠 Constants or global variables should be in ALL_UPPERCASE with underscores to indicate their unchanging nature.
  • 👮‍♂️ Use linters with specific rules like 'camelcase' and 'typescript-eslint' to enforce naming conventions and maintain code quality.
  • 🔄 The script suggests that following these naming conventions contributes to cleaner, more readable, and maintainable React code.

Q & A

  • What are the essential React naming conventions discussed in the video?

    -The video discusses several React naming conventions, including using PascalCase for pages and components, camelCase for file names and variables, and specific hooks naming with 'use' prefix. It also covers the structure of folders and files within a React project.

  • Why is the 'src' folder important in a React project?

    -The 'src' folder is important as it contains all the source code for the application. It is the main directory where developers write and organize their code.

  • What is the purpose of the 'public' folder in a React project?

    -The 'public' folder contains assets that are publicly available throughout the web server, such as images, fonts, and other static files that can be accessed by users or other websites.

  • What are the main folders typically found inside the 'src' directory of a React project?

    -The main folders inside the 'src' directory include 'assets', 'pages', 'components', 'hooks', 'services', 'store', 'typings', and 'utils'.

  • Why should pages be named using PascalCase in a React project?

    -Pages should be named using PascalCase because they are very important and serve as the main entry points for the application. PascalCase makes it clear and easy for developers to identify these key files.

  • What is the recommended naming convention for file names outside the 'pages' folder?

    -For file names outside the 'pages' folder, camelCase is recommended as it is easier to read and write, and it is the conventional standard in JavaScript and React projects.

  • How should components be organized within a React project?

    -Components should be organized in folders, with each folder representing a single component. Inside each component folder, there can be multiple files related to that component, including an 'index' file that serves as the main entry point.

  • What is the naming convention for functions in a React project?

    -Functions should be named using camelCase and should be descriptive to indicate their purpose. For example, 'calculateTotalWithVat' clearly indicates that the function calculates a total including VAT.

  • Why is it important to use interfaces for props in a React component?

    -Using interfaces for props is important because it enforces a contract for the data that components expect to receive, making the code more maintainable and less prone to errors.

  • What is the recommended naming convention for TypeScript interfaces?

    -TypeScript interfaces should be named using PascalCase, without the traditional 'I' prefix, as it is no longer necessary and can make the interface name too specific.

  • How can a linter help enforce good naming conventions in a React project?

    -A linter can enforce good naming conventions by setting rules that check for correct case usage, such as camelCase for variables and PascalCase for interfaces and components. It can prevent code from being committed if it does not adhere to these standards.

Outlines

00:00

📂 Essential React Naming Conventions and Project Structure

This paragraph introduces the importance of adhering to essential React naming conventions for cleaner, more readable, and maintainable code. It covers the standard project structure, including the SRC folder for source code, public folder for assets, and key files like index.html. The SRC folder is emphasized with its main components: assets, pages, components, hooks, services, store, types, and utils. Each component's role within the project is briefly explained, setting the stage for further discussion on naming conventions.

05:01

📝 React Component and File Naming Conventions

The second paragraph delves into the specifics of naming conventions for React components, files, and other elements. It advocates for PascalCase for pages and components to signify their importance and as a convention among developers. The paragraph also discusses the organization of components within folders, the use of interfaces for props, and the importance of descriptive function names. It highlights the use of camelCase for file names outside the pages folder and underscores the significance of using linters to enforce consistent naming conventions across a project.

10:02

🔍 Advanced Naming Conventions for Hooks, Interfaces, and Constants

The final paragraph focuses on advanced naming conventions for hooks, TypeScript interfaces, and constants within a React project. It explains the React Hook naming convention, which requires the 'use' prefix followed by camelCase for clarity and consistency. For TypeScript interfaces, it advises against starting with an 'I' prefix, instead suggesting more descriptive names using PascalCase. The paragraph also touches on the naming of constants, recommending uppercase with underscores for immediate recognition. It concludes with the use of ESLint to enforce these conventions, ensuring a clean and uniform codebase.

Mindmap

Keywords

💡React

React is a popular JavaScript library for building user interfaces, particularly single-page applications. It is maintained by Facebook and a community of individual developers and companies. In the video, React is the central theme as the speaker discusses naming conventions for developers working with React to write cleaner and more maintainable code.

💡Naming Conventions

Naming conventions are the rules and guidelines for choosing the character sequence in identifiers which denote variables, types, functions, and other entities in source code. In the script, the speaker emphasizes the importance of following naming conventions in React to enhance code readability and maintainability, providing examples of both good and bad practices.

💡PascalCase

PascalCase, also known as UpperCamelCase, is a naming convention where the first letter of each word is capitalized, with no spaces or underscores between words. In the video, the speaker recommends using PascalCase for naming pages and components in React, as it signifies the importance of these files as entry points in the application.

💡camelCase

camelCase is a naming convention that is similar to PascalCase, but with the first letter of the first word in lowercase. It is widely used in programming for variable names, function names, and method names. The speaker in the video suggests using camelCase for file names outside the pages folder and for variables and functions within the React code.

💡Components

In React, a component is a piece of code that is reusable and can be included in other parts of the application. Components can be thought of as the building blocks of a React application. The script discusses how to structure and name components, emphasizing the use of PascalCase for their names and the importance of making them reusable.

💡Hooks

Hooks are a feature in React that allows you to use state and other React features without writing a class. They are functions that let you “hook into” React state and lifecycle features from function components. The speaker explains the importance of naming hooks with a descriptive term and starting with 'use' to indicate that it is a hook.

💡Services

In the context of the video, services refer to a layer of the application that handles data fetching and communication with APIs or databases. The speaker mentions that services should be encapsulated with methods for fetching and submitting data, making the code more modular and easier to manage.

💡Store

Store in React, particularly when using Redux or similar state management libraries, refers to a central repository that holds the application's state. The speaker discusses the 'store' folder as a place where all the state-related configurations and store logic should reside.

💡Props

Props, short for properties, are a way to pass data from a parent component to a child component in React. The speaker advises using PascalCase for naming props and emphasizes the use of interfaces to define the structure of props for better code predictability and reusability.

💡Linter

A linter is a tool that analyzes source code to flag programming errors, bugs, stylistic errors, and suspicious constructs. In the video, the speaker recommends using a linter to enforce good naming conventions across a project, ensuring consistency and reducing the likelihood of errors.

💡TypeScript

TypeScript is a superset of JavaScript that adds optional static typing, classes, and interfaces to the language. The speaker mentions TypeScript in the context of using interfaces for defining the structure of props and other data types, which helps in catching errors during development and improving code quality.

Highlights

Essential React naming conventions are crucial for writing cleaner, more readable, and maintainable code.

Project structure typically includes an 'src' folder for source code, a 'public' folder for assets, and key configuration files.

The 'src' folder should be well-organized with main folders such as 'assets', 'pages', 'components', 'hooks', 'services', 'store', 'typings', and 'utils'.

'Pages' folder contains the main entry point files for the application, representing the core pages.

Use PascalCase for naming pages to signify their importance and as the starting point of the application.

Components in the 'components' folder should be reusable and named using PascalCase to indicate they are React components.

Hooks in the 'hooks' folder should be named descriptively and follow the 'use' prefix convention for immediate recognition.

Services in the 'services' folder handle data fetching and API communication, encapsulating actions within them.

'Store' folder is for state management configurations, especially when using tools like Redux or Recoil.

Typings in the 'typings' folder define interfaces and types, crucial for TypeScript projects.

Utility functions in the 'utils' folder should be named descriptively to indicate their purpose clearly.

CamelCase should be used for file names outside the 'pages' folder for better readability.

Props should be defined using interfaces with PascalCase to maintain consistency and clarity.

Function names should be descriptive, indicating their action and purpose for better code understanding.

Variables, especially those holding values, should have descriptive names using camelCase to reflect their content.

Constants or global variables should be in uppercase with underscores to denote their unchanging nature.

Using a linter enforces good naming conventions across the project, ensuring consistency among team members.

ESLint rules like 'camelcase' can be customized to enforce naming conventions for variables and interfaces.

The video concludes with the importance of adhering to naming conventions for better code quality and team collaboration.

Transcripts

play00:00

so if your Junior react developer or

play00:02

you're just getting a new start with

play00:03

react probably right in your react code

play00:05

wrong so in this video we're going to

play00:07

see the essential react naming

play00:09

conventions you should follow as a

play00:11

general react developer to write cleaner

play00:13

and easier to read and easier to

play00:15

maintain code

play00:17

so I'm going to see all different

play00:19

varieties stuff like following how to

play00:21

write Pages components hooks variables

play00:24

process so much more alright so let's

play00:26

get started with Fuller structures and

play00:27

folders naming conventions particularly

play00:29

so here most of them like a lot of

play00:32

JavaScript and reacts projects in here

play00:34

have sort of the same like I mean

play00:36

aspects in here or hold the structure so

play00:38

you're always going to have like an SRC

play00:40

in here where all your you know source

play00:42

code is like living inside of that one

play00:44

there's a public folder in here which

play00:46

has the assets that are publicly

play00:48

available throughout the web server and

play00:50

like users or other websites or other

play00:52

tools can it be easy accessing that one

play00:54

and here you have some couple files like

play00:56

the index.html have like the

play00:58

configuration for Tailwind for example

play01:00

post CS has the TS config.js in here

play01:03

maybe these config in here now let's go

play01:05

inside the SRC and this is actually the

play01:07

main important part so the SRC in here

play01:09

has all of our code and we need to make

play01:11

sure we structure our code the right way

play01:13

so for our setup in here we have like

play01:15

eight main folders starting with the

play01:17

assets and Assets in here are anything

play01:19

related to like images funds uh specific

play01:23

stuff that you you're just going to be

play01:24

represented as an asset like an svgs or

play01:27

something like that now we come to a

play01:28

most important folder here which is

play01:30

Pages now the pages in here is actually

play01:32

where the main Pages for our application

play01:35

actually live and what I mean by the

play01:36

main page is for example let's take this

play01:38

application is a multi-page application

play01:40

that means you have like a home page and

play01:42

you have another page that just allows

play01:44

you to render products we have another

play01:45

page that allows you to see like the top

play01:48

rated products so this is what it looks

play01:50

like for example we've gone to the home

play01:51

page in here and if we try for example

play01:53

go to products this actually we see oh

play01:55

the all the list of products in here be

play01:56

fetch from the database and see all of

play01:58

that so if you go to like you know top

play02:00

rated products or something the third

play02:02

folder here is actually the components

play02:04

and from the name in here you know

play02:05

that's actually where all of our reacts

play02:07

components actually live inside and

play02:09

mainly those components are reusable so

play02:11

we can have any component for example

play02:12

have the cards or a product and we can

play02:15

reuse those components across different

play02:17

pages for example I can use the power

play02:18

skin here on the top rated product and

play02:20

you can use it at the same time on the

play02:22

product we have other folders like hooks

play02:24

this is actually where all our herx

play02:25

lives we have the services it's actually

play02:27

where all of our services relates and

play02:29

service is what I mean by server is

play02:30

actually like you Gateway your main

play02:32

point to communicate with the data base

play02:34

or something or with an API so the

play02:36

service in here is going to like be

play02:37

responsible fetching data submitting

play02:39

there to the API so all of the actions

play02:41

are going to be just like encapsulated

play02:42

inside of the service in here and you

play02:44

can like use that service as a function

play02:46

or as a class or just like an object

play02:48

that has a bunch of methods inside of it

play02:50

and you can just right use it here we go

play02:52

the store so if you're using redox or

play02:53

Zoo standard any other store management

play02:55

for example I'm using black redox

play02:57

toolkit in here the stores folders

play02:59

actually where all your stores should be

play03:00

living and all the configuration related

play03:02

to stores for typings in here you have

play03:04

all the typing for example all the type

play03:06

interface like the cards how a product

play03:09

should look like and everything this is

play03:10

actually where you should live aside

play03:11

insiders and last but not least you got

play03:13

the utils in here so the utility is in

play03:15

here are going to be like you know

play03:16

whatever utility you have for example

play03:18

some calculations you're doing something

play03:20

not really into component rendering or

play03:22

not really into the UI itself now when

play03:24

it comes to name conventions let's go

play03:25

and get started with the pages because

play03:27

that's the main important folder in here

play03:29

so for pages in here what you want to do

play03:31

always use passcode case and that's just

play03:34

simply because pages are very important

play03:36

so you just like using Pascal case

play03:37

you're starting with an uppercase letter

play03:38

in here and you combine it with like

play03:40

other words are always going to be

play03:42

stunning with an uppercase letter so

play03:43

that will tell the actual developers are

play03:45

working on the same code base in here

play03:46

that Pages here and those files are

play03:49

actually an important files like they

play03:50

are the main entry point files for our

play03:53

code base in here because those are the

play03:55

main Pages that's all the components all

play03:57

the launch is going to flow from so

play03:58

those are actually like the starting

play04:00

point so you don't want to use something

play04:01

like about Dash Us in here you want to

play04:03

always use Pascal case in here so

play04:05

something like this you know home page

play04:07

inside of it there's a component starts

play04:09

with an age like you know best case as

play04:11

well so instead of just using about us

play04:13

in here because that's a bad practice

play04:15

now for file names actually depends on

play04:17

what time file as for example here we

play04:19

got the up in here because he uses the

play04:21

Pascal key so he starts with an

play04:22

uppercase letter that's because the up

play04:24

in here is actually kind of sort of like

play04:26

very important like the entry point for

play04:28

our application where they have a router

play04:30

we have the provider we have like you

play04:32

know you know there's actually where the

play04:33

routing starts so that's basically an

play04:35

uppercase uses basketball case but other

play04:37

than that most of the times like 90 of

play04:40

the times you want to use camel casing

play04:42

like this one main.tsx in here so like

play04:44

this is actually camel casing so I would

play04:46

always suggest using camel casing file

play04:49

names and particularly file names are

play04:51

outside the pages folder now for our

play04:52

components and reusable components in

play04:54

general I love to put my components

play04:56

inside of folders each folder represents

play04:58

a single component and like any

play05:01

components folder in here you can have

play05:02

multiple sort of files and components

play05:04

related to that components itself so for

play05:06

example in here you got the card drawing

play05:08

here and you have the index like the

play05:10

index in here tells you like this is the

play05:12

main entry point for the card so there's

play05:13

actually where the main component lives

play05:15

inside of the index but if you need to

play05:18

you know split into multiple components

play05:19

just to make it easier and readable so

play05:21

you can just put a multiple component

play05:22

here you can just going to use the

play05:23

current drawing here and you're done you

play05:25

can put it inside of the same folder now

play05:27

for naming components you always always

play05:29

want to use Pascal case naming in here

play05:31

and you always want to export like a

play05:33

function I don't like exporting that you

play05:35

know const something like it looks like

play05:37

a variable I love to export like a

play05:39

function that immediately tells you oh

play05:40

this is a function component like a

play05:43

reacts an actual functional reacts

play05:45

components so easy you know that and of

play05:47

course you want to use Pascal casing so

play05:49

you don't want to use you know something

play05:50

like this you don't want to use a dash

play05:51

or you don't want to use snake casing

play05:53

all right when it comes to props you

play05:55

don't want to use any type of like

play05:57

naming convention for props in here you

play05:59

always want to use an interface and you

play06:01

want to like maybe you want to export

play06:02

that because it could be used by another

play06:04

components that depends on your code

play06:05

base but for naming convention you would

play06:08

want to always use a pascal case for

play06:11

props in here because you know you just

play06:12

do like products pops you don't include

play06:14

the i in here that's outdated and you

play06:17

just provide like all props product

play06:18

props now for functions for example in

play06:21

here we have utl we have Carter

play06:22

typescript this particular file here we

play06:24

have a function that allows us to

play06:26

calculate the total price of our cards

play06:29

items and whatever items you have inside

play06:30

our card we can just use this function

play06:32

to basically get the total now there's

play06:34

actually two things first one in here is

play06:36

actually the bad approach where there's

play06:38

actually it all depends on the name of a

play06:40

function because the more descriptive

play06:42

name you put the easier it's going to

play06:44

get and the easier it's going to be you

play06:46

know it's going to make your code

play06:47

cleaner and easier to read for example

play06:49

when you take for instance this function

play06:51

in here does the calculate and what it

play06:52

does as well is actually includes a vat

play06:55

rate so it calculates some taxes as well

play06:58

before checkout so from the function

play07:00

name in here by just looking at the name

play07:02

in here if you're just like another in

play07:04

another file or something and using or

play07:06

just looking at the function name in

play07:07

here you don't know exactly what it's

play07:08

doing you know that oh you're getting

play07:10

the total from a cards but you know

play07:12

exactly what's happening if you're doing

play07:14

get maybe you're a fetch it from

play07:15

somewhere or what what is what do you

play07:17

mean by exactly in our case and also

play07:19

we're not specifically telling it we're

play07:21

including the vat rating here or the

play07:23

taxes by instead for the good like the

play07:25

good name in here for the function what

play07:27

you should do for example oh you give it

play07:29

a verb like oh calculate and that means

play07:31

oh we did this function is going to do

play07:33

the calculation for us and we know this

play07:35

is cards when it's going to calculate

play07:36

the total with vat so the name in here

play07:40

is very descriptive just by looking at

play07:42

the name in here I can easily tell like

play07:43

what the function does and I just know

play07:46

that's going to calculate something for

play07:48

our cart items and from the parameters

play07:50

you know I know it takes cards and it

play07:51

takes products and as simple as that now

play07:53

if you go to variables which are

play07:55

basically the same thing as functions so

play07:58

they need to be as descriptive as

play07:59

possible of what the variable has now

play08:02

they are a little bit different from

play08:03

functions because functions has a like

play08:05

something to do whether they get you

play08:06

something they return something or they

play08:08

do an action but a variable is just for

play08:10

holding a value so it should be like a

play08:12

noun something so here from this we got

play08:15

two things so we got the first bad

play08:16

approach in here we're using use memo

play08:18

what we're doing we're filtering through

play08:20

products and we just like filtering

play08:22

products in here by the rating so we're

play08:24

getting like top rated products for our

play08:26

web page in here which is called top

play08:28

ratedproducts.tsx and we just simply

play08:30

returning that but now we're putting

play08:32

inside of a variable called filtered I

play08:34

mean from the variables do you know

play08:35

exactly what the variable holds it holds

play08:37

a filter it but filtered what I don't

play08:39

know what the type of value it has I

play08:42

don't know what is what is it to do with

play08:44

that I mean just by looking at the

play08:45

variable I don't exactly know what's

play08:47

happening but the good approach in here

play08:48

you should like include you know have a

play08:51

pretty decent variable name in here at

play08:52

least so you can do oh filtrated

play08:54

products by rate and that tells you

play08:57

immediately oh this will include the

play08:59

products array that are filtered by rate

play09:01

just like that and of course for

play09:03

variable names you always want to use

play09:04

camel casing the same thing as functions

play09:07

all right now when it comes to hooks the

play09:08

same thing all of them actually play a

play09:10

major role in the naming convention so

play09:12

make sure always to use like a

play09:14

descriptive name for your hook in here

play09:16

and the thing in here for herx because

play09:17

react high is actually a very specific

play09:19

naming convention for hooks you always

play09:21

need to prepend a use before The Hook

play09:24

name so just by following that

play09:26

immediately you know or any other

play09:27

developer routes on the same code base

play09:28

in your ear knows that by just looking

play09:30

at this oh this is a hook immediately

play09:32

and it should be used inside of a

play09:34

functional component and the same thing

play09:36

naming conversion is always camel casing

play09:38

just to make it easier to read and very

play09:40

simple and last but not least which are

play09:42

typescript interfaces because the reason

play09:44

we're covering this in reacts because 99

play09:46

of the times use an interfacing here

play09:48

you're going to be using for props or

play09:49

something and interfaces are actually a

play09:51

very important thing whether interfaces

play09:54

or types they are basically the same

play09:55

thing so the same naming convention here

play09:58

applies to both of them so for example

play10:00

in here the bad approach for naming

play10:01

interfaces you always started with an

play10:04

eye I used to do that a lot in the

play10:06

previously but now like everything

play10:08

changes typescripts you no longer need

play10:10

to do that because that actually makes

play10:11

it very specific and interface actually

play10:13

very Broad and they have a lot of things

play10:15

they can do so for example of doing eye

play10:18

products you can just name it store

play10:19

products and yes for interfaces you

play10:21

would want to use password case because

play10:23

interface represents a type and when it

play10:25

comes to constants variables or constant

play10:27

Global variables you always want to name

play10:29

them as an uppercase like o uppercase

play10:32

with an underscore instead of doing like

play10:34

a camel casing or something you know the

play10:36

whole Community actually agrees on that

play10:37

so just always using an uppercase for a

play10:39

constant variable make you immediately

play10:41

know oh this is a constant sort of

play10:43

variable in here it just has a value in

play10:45

here and that's it to better enforce

play10:47

actually having a good naming convention

play10:49

across the project and just to make sure

play10:51

you know all the team members actually

play10:53

following the same in conventions you

play10:55

want to use something like a linter

play10:56

because I have like two rules I always

play10:59

love to use for ES links in here to kind

play11:01

of like enforce a good naming convention

play11:03

across my projects and the first one is

play11:06

called like camel case which is kind of

play11:08

like a rule that allows you to enforce

play11:10

camel casing for variable names in here

play11:12

has a bunch of options in here but this

play11:14

one just allows you to have camo casing

play11:16

for variables so there's actually pretty

play11:17

good one it doesn't have a lot of like

play11:19

you know flexibility and there's the

play11:21

other one which I really like but

play11:23

there's actually needs from you to use

play11:25

typescript ESPN plug it in here so you

play11:27

can just go in like serious typescript

play11:29

instant in here and see how you can set

play11:31

up this one and this is actually very

play11:33

very customizable you can have a bunch

play11:35

of stuff in here like exclusively the

play11:37

different options so for example inside

play11:38

of my ears links what I'm using I'm

play11:40

using camel case ER so that just gonna

play11:42

tell all my variables to be camel cases

play11:45

in here although I'm just going to throw

play11:46

an error in here and here for the naming

play11:48

conventions of like the TF timescript is

play11:50

the name convention I'm using an error

play11:53

and I mean giving it actually a

play11:55

different options in it for example for

play11:56

a variable I want to make sure it's

play11:58

actually a camel case and I can just

play12:00

like lead in underscore allowing to add

play12:03

any underscore at the beginning of the

play12:05

variable like something like that

play12:06

modifiers in here should be like

play12:08

exported variables should be camel cased

play12:10

and so much more so for example if he's

play12:12

trying to do your own links in here to

play12:14

see exactly what we have if you see the

play12:16

errors in here for example people there

play12:18

is a expected empty option in here for

play12:20

example there is an identifier which is

play12:22

is open he uses snake case and he tells

play12:25

you oh this is not a camel case I can't

play12:27

accept that so that just immediately

play12:29

warns you about that so it doesn't allow

play12:31

you to like commit your code that is

play12:32

looking pretty bad in here or for

play12:34

example you go oh interface name eye

play12:36

product must not match the reject so you

play12:39

should not start with an i in here so

play12:41

that makes it a little bit more you know

play12:42

easier for you to know and find the

play12:44

issues across by just using those rules

play12:46

so anyway thanks for watching hope you

play12:48

guys enjoyed the naming conventions and

play12:50

catch you all hopefully in the next ones

Rate This

5.0 / 5 (0 votes)

Related Tags
React NamingCoding StandardsDeveloper GuideCode ReadabilityMaintainable CodePascal CaseCamel CaseComponent FoldersHooks UsageTypeScript InterfacesLinter Rules