1. .Net 7
2. EntityFrameworkCore
3. Microsoft Identity
4. Json Web Token
5. Serilog
6. Ms Sql Server
7. FluentValidation
8. AutoMapper
9. Swagger
1.İsimlendirmeler İngilizce olmalı.
2.Interface isimleri 'I' notasyonu ile isimlendirilmeli --> IInterface
Burada belirlenen standartlar C# dosyaları için geçerlidir.
Dosya isimleri `.cs` uzantısına sahip dosyalar:
1. İsimler 'PascalCase' olmalı.
Veritabanı tablolarındaki yada veri setleri iç temsil eden dosyalar için geçerlidir.
Student.cs StudentQuestion.cs student.cs studentQuestion.cs Student_Question.csVeri tabanı tabloları ile entity sınıflarının konfigürasyon işlemlerini içeren sınıfları temsil eden dosyalar için geçerlidir.
StudentConfiguration.cs StudentQuestionConfiguration.cs Student_Question_Configuration.cs studentQuestionConfiguration.csVeri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.
> [Veri Seti][işlem][Dto].cs
StudentCreateDto.cs --> [Student][Create][Dto].cs StudentListDto.cs studentListDto.cs Student_Create_Dto.csView üzerinde veri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.
> [Veri Seti][işlem][VM].cs
StudentCreateVM.cs --> [Student][Create][VM].cs StudentListVM.cs studentListVM.cs Student_Create_VM.csVeri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.
> [Veri Seti][Repository].cs
StudentRepository.cs StudentQuestionRepository.cs studentRepository.cs Student_Repository.csUygulama içerisindeki servisleri yönetmek için kullanılan sınıfları temsil eden dosyalar için geçerlidir.
> [Veri Seti / Servis][Service].cs
StudentService.cs MailService.cs AuthenticationService.cs studentService.cs Student_Service.csUygulama içerisinde kullanılan interface'leri temsil eden dosyalar için geçerlidir.
IStudentRepository.cs IMailService.cs IEntity.cs iStudentService.cs StudentService.cs IStudent_Service.csYorumlar, programa etki etmeyen ancak kendimizin veya kodu inceleyen bir başkasının yapılan işlerin neden ve nasıl yapıldığını açıklamak için kullanılır.
// ---------------------------------------------------------------
// Copyright (c) Coalition of the Good-Hearted Engineers
// FREE TO USE TO CONNECT THE WORLD
// --------------------------------------------------------------- //----------------------------------------------------------------
// <copyright file="StudentService.cs" company="OpenSource">
// Copyright (C) Coalition of the Good-Hearted Engineers
// </copyright>
//---------------------------------------------------------------- /*
* ==============================================================
* Copyright (c) Coalition of the Good-Hearted Engineers
* FREE TO USE TO CONNECT THE WORLD
* ==============================================================
*/Method summary bir class, method, property, field vb. kod bloğunun yaptığı işi parametrelerin, sınıfların vb. elemanların neyi ifade ettiğini gösteren bilgi bloklarıdır.
Visual studio'da method summary oluşturmak için method öncesinde '///' yazıp method summary bloğu otomatik olarak oluşacaktır.
```csharp
///<summary>
/// Buraya Metodun yaptığı ana iş gelecek.
///</summary>
///<param name="Degisken1"> Değişken1 'i neden istiyoruz. </param>
///<param name="Degisken2"> Değişken2 'yi neden istiyoruz. </param>
///<param name="Degisken3"> Değişken3 'ü neden istiyoruz. </param>
///<param name="Degisken4"> Değişken4 'ü neden istiyoruz. </param>
///<exception cref="System.OverflowException">
/// Buraya eğer method bir exception barındırıyorsa onun koşullarını ekliyoruz
///</exception>
///<returns> Dönüş değerleri </returns>
```
Burada belirlenen standartlar C# class ve interface dosyaları için geçerlidir.
IStudentRepository.cs IMailService.cs IEntity.cs iStudentService.cs StudentService.cs IStudent_Service.csVeritabanı tablolarındaki yada veri setleri iç temsil eden dosyalar için geçerlidir.
Student.cs StudentQuestion.cs student.cs studentQuestion.cs Student_Question.csVeri tabanı tabloları ile entity sınıflarının konfigürasyon işlemlerini içeren sınıfları temsil eden dosyalar için geçerlidir.
StudentConfiguration.cs StudentQuestionConfiguration.cs Student_Question_Configuration.cs studentQuestionConfiguration.csVeri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.
> [Veri Seti][işlem][Dto].cs
StudentCreateDto.cs --> [Student][Create][Dto].cs StudentListDto.cs studentListDto.cs Student_Create_Dto.csView üzerinde veri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.
> [Veri Seti][işlem][VM].cs
StudentCreateVM.cs --> [Student][Create][VM].cs StudentListVM.cs studentListVM.cs Student_Create_VM.csVeri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.
> [Veri Seti][Repository].cs
StudentRepository.cs StudentQuestionRepository.cs studentRepository.cs Student_Repository.csUygulama içerisindeki servisleri yönetmek için kullanılan sınıfları temsil eden dosyalar için geçerlidir.
> [Veri Seti / Servis][Service].cs
StudentService.cs MailService.cs AuthenticationService.cs studentService.cs Student_Service.csMethod isimleri:
1. Methodun ne yaptığını özetleyecek şekilde olmalı.
2. Net ve kısa olmalı
3. Asenkron olan method isimleri 'Async' ifadesini barındırmalı
Method gerçekleştirdiği eylemi temsil eden fiili içermelidir.
public List<Student> GetAll()
{
...
} public Student Add()
{
...
} public List<Student> All()
{
...
} public List<Student> getAll()
{
...
}Asenkron methodlar isim sonuna ```Async``` ifadesini almalı ve ````Task``` yada ````ValueTask``` döndürmeli
public async Task<List<Student>> GetAllAsync()
{
...
} public Student Add()
{
...
} public async Task<List<Student>> GetAll()
{
...
}Method parametreleri bir nesnenin hangi özelliğini ifade ettiğini atanacakları veya arama gibi herhangi bir eylem için kullanılacakları açık belirtmelidir.
public async Task<Student> GetByNameAsync(string studentName)
{
...
} public async Task<Student> GetByIdAsync(Guid studentId)
{
...
} public async Task<Student> GetByClassroomIdAsync(Guid classroomId)
{
...
} public async Task<Student> GetByStudentNameAsync(string text)
{
...
}public async Task<Student> GetByStudentNameAsync(string name)
{
...
}Bir methodu kullanırken, parametre isimleri, kısmen veya tamamen aktarılan değişkenlerle eşleşirse, parametre ismi kullanmanız gerekmez, aksi takdirde değişkenlerden önce parametre ismi belirtmeniz gerekir.
Bir methodumuz olduğunu varsayalım:
Student GetByNameAsync(string studentName);string studentName = "Todd";
Student student = await GetStudentByNameAsync(studentName); Student student = await GetByNameAsync(studentName: "Todd");Student student = await GetByNameAsync("Todd");Student student = await GetByNameAsync(todd);Değişken isimleri öz ve sahip olduğu veya potansiyel olarak tutacağı değeri temsil edecek şekilde isimlendirilmeli.
Değişkenin tutacağı değer tekil bir değeri temsil edecek şekilde isimlendirilmeli.
var student = new Student();var hasStudent = await CheckNameAsync(studentName);var studentModel = new Student();var studentObj = new Student();students.Where(student => student ... );students.Where(s => s ... );Değişkenin tutacağı değer çoğul değerleri temsil edecek şekilde isimlendirilmeli.
var students = new List<Student>();var studentList = new List<Student>();