Skip to content

omerFarukCelikRep/BlogApp.WebApi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BlogApp


Technologies

1. .Net 7
2. EntityFrameworkCore
3. Microsoft Identity
4. Json Web Token
5. Serilog
6. Ms Sql Server
7. FluentValidation
8. AutoMapper
9. Swagger

Coding Standard

  1. Genel Standartlar
  2. Dosyalar
    1. İsimlendirme
      1. Db/VeriSet İsimlendirmesi
      2. Db/Konfigurasyon İsimlendirmesi
      3. Dto İsimlendirmesi
      4. View Model İsimlendirmesi
      5. Repository İsimlendirmesi
      6. Servis İsimlendirmesi
      7. Interface İsimlendirmesi
  3. Yorum Satırları
    1. Copyrights
    2. Method/Class/Prop vb. Özet (Summary)
  4. Class ve Interface
    1. İsimlendirme
      1. Interface İsimlendirme
      2. Db/VeriSet İsimlendirmesi
      3. Db/Konfigurasyon İsimlendirmesi
      4. Dto İsimlendirmesi
      5. View Model İsimlendirmesi
      6. Repository İsimlendirmesi
      7. Servis İsimlendirmesi
  5. Methodlar
    1. İsimlendirme
      1. Fiil (Verb)
      2. Asenkron
      3. Parametreler
      4. Argüman (Parametre Gönderimi)
  6. Değişkenler
    1. İsimlendirme
      1. Tekil
      2. Lambda Expressions
      3. Çoğul

0.Genel Standartlar

1.İsimlendirmeler İngilizce olmalı.
2.Interface isimleri 'I' notasyonu ile isimlendirilmeli --> IInterface

1.Dosyalar

Burada belirlenen standartlar C# dosyaları için geçerlidir.

1.1.İsimlendirme

Dosya isimleri `.cs` uzantısına sahip dosyalar:
1. İsimler 'PascalCase' olmalı. 

1.1.1.Db/VeriSet İsimlendirmesi

Veritabanı tablolarındaki yada veri setleri iç temsil eden dosyalar için geçerlidir.
Do ✅
    Student.cs
Also, Do ✅
    StudentQuestion.cs
Don't ❌
    student.cs
Also, Don't ❌
    studentQuestion.cs
Also, Don't ❌
    Student_Question.cs

1.1.2.Konfigurasyon İsimlendirmesi

Veri 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.
Do ✅
    StudentConfiguration.cs
Also, Do ✅
    StudentQuestionConfiguration.cs
Don't ❌
    Student_Question_Configuration.cs
Also, Don't ❌
    studentQuestionConfiguration.cs

1.1.3.Dto İsimlendirmesi

Veri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.

    > [Veri Seti][işlem][Dto].cs
Do ✅
    StudentCreateDto.cs  --> [Student][Create][Dto].cs
Also, Do ✅
    StudentListDto.cs
Don't ❌
    studentListDto.cs
Also, Don't ❌
    Student_Create_Dto.cs

1.1.4.View Model İsimlendirmesi

View üzerinde veri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.

    > [Veri Seti][işlem][VM].cs
Do ✅
    StudentCreateVM.cs  --> [Student][Create][VM].cs
Also, Do ✅
    StudentListVM.cs
Don't ❌
    studentListVM.cs
Also, Don't ❌
    Student_Create_VM.cs

1.1.5.Repository İsimlendirmesi

Veri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.

    > [Veri Seti][Repository].cs
Do ✅
    StudentRepository.cs
Also, Do ✅
    StudentQuestionRepository.cs
Don't ❌
    studentRepository.cs
Also, Don't ❌
    Student_Repository.cs

1.1.6.Servis İsimlendirmesi

Uygulama içerisindeki servisleri yönetmek için kullanılan sınıfları temsil eden dosyalar için geçerlidir.

    > [Veri Seti / Servis][Service].cs
Do ✅
    StudentService.cs
Also, Do ✅
    MailService.cs
Also, Do ✅
    AuthenticationService.cs
Don't ❌
    studentService.cs
Also, Don't ❌
    Student_Service.cs

1.1.7.Interface İsimlendirmesi

Uygulama içerisinde kullanılan  interface'leri temsil eden dosyalar için geçerlidir.
Do ✅
    IStudentRepository.cs
Also, Do ✅
    IMailService.cs
Also, Do ✅
    IEntity.cs
Don't ❌
    iStudentService.cs
Also, Don't ❌
    StudentService.cs
Also, Don't ❌
    IStudent_Service.cs

2.Yorum Satırları

Yorumlar, 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.

2.1 Copyrights

Do ✅
    // ---------------------------------------------------------------
    // Copyright (c) Coalition of the Good-Hearted Engineers
    // FREE TO USE TO CONNECT THE WORLD
    // ---------------------------------------------------------------
Don't ❌
    //----------------------------------------------------------------
    // <copyright file="StudentService.cs" company="OpenSource">
    //      Copyright (C) Coalition of the Good-Hearted Engineers
    // </copyright>
    //----------------------------------------------------------------
Also, Don't ❌
   /* 
    * ==============================================================
    * Copyright (c) Coalition of the Good-Hearted Engineers
    * FREE TO USE TO CONNECT THE WORLD
    * ==============================================================
    */

2.2.Method/Class/Prop vb. Özet (Summary)

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>
```

3.Class ve Interface

Burada belirlenen standartlar C# class ve interface dosyaları için geçerlidir.

3.1.İsimlendirme

3.1.1.Interface İsimlendirme

Do ✅
    IStudentRepository.cs
Also, Do ✅
    IMailService.cs
Also, Do ✅
    IEntity.cs
Don't ❌
    iStudentService.cs
Also, Don't ❌
    StudentService.cs
Also, Don't ❌
    IStudent_Service.cs

3.1.2.Db/VeriSet İsimlendirmesi

Veritabanı tablolarındaki yada veri setleri iç temsil eden dosyalar için geçerlidir.
Do ✅
    Student.cs
Also, Do ✅
    StudentQuestion.cs
Don't ❌
    student.cs
Also, Don't ❌
    studentQuestion.cs
Also, Don't ❌
    Student_Question.cs

3.1.3.Konfigurasyon İsimlendirmesi

Veri 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.
Do ✅
    StudentConfiguration.cs
Also, Do ✅
    StudentQuestionConfiguration.cs
Don't ❌
    Student_Question_Configuration.cs
Also, Don't ❌
    studentQuestionConfiguration.cs

3.1.4.Dto İsimlendirmesi

Veri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.

    > [Veri Seti][işlem][Dto].cs
Do ✅
    StudentCreateDto.cs  --> [Student][Create][Dto].cs
Also, Do ✅
    StudentListDto.cs
Don't ❌
    studentListDto.cs
Also, Don't ❌
    Student_Create_Dto.cs

3.1.5.View Model İsimlendirmesi

View üzerinde veri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.

    > [Veri Seti][işlem][VM].cs
Do ✅
    StudentCreateVM.cs  --> [Student][Create][VM].cs
Also, Do ✅
    StudentListVM.cs
Don't ❌
    studentListVM.cs
Also, Don't ❌
    Student_Create_VM.cs

3.1.6.Repository İsimlendirmesi

Veri transferi için kullanılan sınıfları temsil eden dosyalar için geçerlidir.

    > [Veri Seti][Repository].cs
Do ✅
    StudentRepository.cs
Also, Do ✅
    StudentQuestionRepository.cs
Don't ❌
    studentRepository.cs
Also, Don't ❌
    Student_Repository.cs

3.1.7.Servis İsimlendirmesi

Uygulama içerisindeki servisleri yönetmek için kullanılan sınıfları temsil eden dosyalar için geçerlidir.

    > [Veri Seti / Servis][Service].cs
Do ✅
    StudentService.cs
Also, Do ✅
    MailService.cs
Also, Do ✅
    AuthenticationService.cs
Don't ❌
    studentService.cs
Also, Don't ❌
    Student_Service.cs

4.Methodlar

4.1.İsimlendirme

Method 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ı

4.1.1.Fiil (Verb)

Method gerçekleştirdiği eylemi temsil eden fiili içermelidir.
Do ✅
    public List<Student> GetAll()
    {
        ...
    }
Also, Do ✅
    public Student Add()
    {
        ...
    }
Don't ❌
    public List<Student> All()
    {
        ...
    }
Also, Don't ❌
    public List<Student> getAll()
    {
        ...
    }

4.1.2.Asenkron

Asenkron methodlar isim sonuna ```Async``` ifadesini almalı ve ````Task``` yada ````ValueTask``` döndürmeli
Do ✅
    public async Task<List<Student>> GetAllAsync()
    {
        ...
    }
Also, Do ✅
    public Student Add()
    {
        ...
    }
Don't ❌
    public async Task<List<Student>> GetAll()
    {
        ...
    }

4.1.3.Parametreler

Method parametreleri bir nesnenin hangi özelliğini ifade ettiğini atanacakları veya arama gibi herhangi bir eylem için kullanılacakları açık belirtmelidir.
Do ✅
    public async Task<Student> GetByNameAsync(string studentName)
    {
        ...
    }
Also, Do ✅
    public async Task<Student> GetByIdAsync(Guid studentId)
    {
        ...
    }
Also, Do ✅
    public async Task<Student> GetByClassroomIdAsync(Guid classroomId)
    {
        ...
    }
Don't ❌
    public async Task<Student> GetByStudentNameAsync(string text)
    {
        ...
    }
Also, Don't ❌
public async Task<Student> GetByStudentNameAsync(string name)
{
    ...
}

4.1.4.Argüman (Parametre Gönderimi)

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);
Do ✅
string studentName = "Todd";
Student student = await GetStudentByNameAsync(studentName);
Also, Do ✅
    Student student = await GetByNameAsync(studentName: "Todd");
Don't ❌
Student student = await GetByNameAsync("Todd");
Also, Don't ❌
Student student = await GetByNameAsync(todd);

5.Değişkenler

5.1.İsimlendirme

Değişken isimleri öz ve sahip olduğu veya potansiyel olarak tutacağı değeri temsil edecek şekilde isimlendirilmeli.

5.1.1.Tekil

Değişkenin tutacağı değer tekil bir değeri temsil edecek şekilde isimlendirilmeli.
Do ✅
var student = new Student();
Also, Do ✅
var hasStudent = await CheckNameAsync(studentName);
Don't ❌
var studentModel = new Student();
Also, Don't ❌
var studentObj = new Student();

5.1.2.Lambda Expressions

Do ✅
students.Where(student => student ... );
Don't ❌
students.Where(s => s ... );

5.1.3.Çoğul

Değişkenin tutacağı değer çoğul değerleri temsil edecek şekilde isimlendirilmeli.
Do ✅
var students = new List<Student>();
Don't ❌
var studentList = new List<Student>();

About

Blog App WebApi building with .Net 7

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages