Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from CleverDevs (Mammad)
-اصل Method Names در کلین کد

این اصل میگه که نام متد ها باید فعل باشه مثل postPayment , deletePage , save و غیره و غیره

شما میتونید از get , set و is تو اسم متد هاتون استفاده کنید (اینا تو جاوا استاندارد هستن ولی خب تو بقیه زبون ها هم خوبه که استفاده کنید)
 
string name = employee.getName();
customer.setName("mike");
if (paycheck.isPosted())...



کد بالا مثال دقیقی از کلمات set ,get,is هستش که برای گرفتن از get برای ثبت کردن از set و برای چک کردن از is استفاده کرده

#CleanCode
@CleverDevs - @CleverDevsGp
Forwarded from CleverDevs (Mahdi)
Good 🆚 Bad Refactor


وقتی یه پروژه رو میخوایم ریفکتور کنیم چیکارا نکنیم که وضع بدتر شه؟ (این پارت یکه.)

1. Don't Change The Base


بیس کد فعلی رو تا حد امکان تغییر ندید، صرفا شرایط فعلی رو بهتر کنید. مثال:

قبل:
function processUsers(users: User[]) {
const result = [];
for (let i = 0; i < users.length; i++) {
if (users[i].age >= 18) {
const formattedUser = {
name: users[i].name.toUpperCase(),
age: users[i].age,
isAdult: true
};
result.push(formattedUser);
}
}
return result;
}


بعد از یه ریفکتور بد:
import * as R from 'ramda';
const processUsers = R.pipe(
R.filter(R.propSatisfies(R.gte(R.__, 18), 'age')),
R.map(R.applySpec({
name: R.pipe(R.prop('name'), R.toUpper),
age: R.prop('age'),
isAdult: R.always(true)
}))
);


بعد از یه ریفکتور خوب:
function processUsers(users: User[]): FormattedUser[] {
return users
.filter(user => user.age >= 18)
.map(user => ({
name: user.name.toUpperCase(),
age: user.age,
isAdult: true
}));
}


توی ریفکتور اول بیس کد کلا تغییر کرد و از یه پکیج جدید استفاده شد و احتمال زیاد بقیه کسایی که تو پروژه هستن باهاش آشنایی ندارن و کار برای همه سخت میشه.

#CleanCode SRC
@CleverDevs @CleverDevsGp
Forwarded from CleverDevs (Mammad)
-اصل Vertical Openness Between Concepts در کلین کد

کاملا ساده و مختصر این اصل میگه که بین بخش های مختلف کدتون یکی دو خط فضای خالی بزارید فاصله بیوفته بینشون مثلا کد زیر رو ببنید

import CleverDevs from telegram
function helloWorld(){
console.log("hello world");
}
function sendStarRaction(){
console.log('send star reaction on CleverDevs Posts');
}

تو کد بالا بین بخش های مختلف کد فاصله ای نذاشتیم حالا اگه کدمون بیشتر و پیچیده تر بشه خوندنش خیلی سخت تر میشه حالا اگه بیایم و مثل کد پایین یه خط خالی بین هر بخشی از کد بزاریم خوندنش به مراتب راحت تر میشه

import CleverDevs from telegram

function helloWorld(){
console.log("hello world");
}

function sendStarRaction(){
console.log('send star reaction on CleverDevs Posts');
}


حالا چون تو این پست نمیشد مثال بزرگتری زد اونقدرا تفاوتشون معلوم نمیشه ولی تو کدبیس های بزرگتر رعایت همین یه موضوع تفاوت چشمگیری ایجاد میکنه

#CleanCode
@CleverDevs - @CleverDevsGp
Forwarded from CleverDevs (Mammad)
-اصل Do One Thing در کلین کد

این اصل میگه هر تابعی باید فقط یه کار انجام بده و اگه نیاز به دوتا کار شد باید دوتا فانکشن بکنیش


FUNCTIONS SHOULD DO ONE THING. THEY SHOULD DO IT WELL THEY SHOULD DO IT ONLY.


اگه یک تابع فقط مراحلی رو انجام میده که به اسمش میخوره یعنی فقط یک کار میکنه و کارت درسته


#CleanCode
@CleverDevs - @CleverDevsGp
Forwarded from Gopher Academy
🔵 عنوان مقاله
Valgo 0.7: An Expressive Validator Library

🟢 خلاصه مقاله:
اValgo 0.7 یک کتابخانه اعتبارسنجی است که با تکیه بر generics، API ایمن از نظر نوع و قابل‌گسترش ارائه می‌دهد. به‌جای استفاده از struct tags، قواعد به‌صورت توابع نوشته می‌شوند؛ رویکردی که خوانایی، تست‌پذیری و ترکیب‌پذیری را افزایش می‌دهد و وابستگی به رشته‌ها و reflection را کاهش می‌دهد. نتیجه، اعتبارسنجی شفاف‌تر و قابل‌نگهداری‌تری است که از بررسی‌های ساده تا منطق‌های پیچیده و دامنه‌محور را پوشش می‌دهد و به‌سادگی با لایه‌های مختلف کد ادغام می‌شود.

#Validation #Generics #TypeSafety #Extensibility #CleanCode #DeveloperExperience #SoftwareEngineering

🟣لینک مقاله:
https://golangweekly.com/link/174655/web


👑 @gopher_academy