🔥clean architecture
✅یه معماری لایه ای هست
✅توی هر لایه ممکنه از پترن های مختلف استفاده بشه و چیزی که توی تصویر میبینید فقط یک مثاله
✅نکته ی مهم نحوه ی ارتباط بین لایه های مختلف هست و مهم تر از اون تفکیک لاجیک های مختلف از هم.
@purecoder_ir
✅یه معماری لایه ای هست
✅توی هر لایه ممکنه از پترن های مختلف استفاده بشه و چیزی که توی تصویر میبینید فقط یک مثاله
✅نکته ی مهم نحوه ی ارتباط بین لایه های مختلف هست و مهم تر از اون تفکیک لاجیک های مختلف از هم.
@purecoder_ir
اگه بخواین یه تست برای فانکشن زیر بنویسید، چطوری مینویسید:
🤔🤔🤔
@purecoder_ir
public int Add(int first, int second)
{
return first + second;
}
🤔🤔🤔
@purecoder_ir
Pure Coder
اگه بخواین یه تست برای فانکشن زیر بنویسید، چطوری مینویسید: public int Add(int first, int second) { return first + second; } 🤔🤔🤔 @purecoder_ir
نیازی به تست نوشتن برای این فانکشن نیست 😝
یعنی اگه توی یه پروژه ای چنین چیزی داشتی نیازی به تست نداره.
انقدر ساده هست که جایی برای خطا و اشتباه کردن نداره.
🔥کد کمتر، زندگی بهتر.
(تست هم کد محسوب میشه)
👻برای سوال مصاحبه خوبه👻
@purecoder_ir
یعنی اگه توی یه پروژه ای چنین چیزی داشتی نیازی به تست نداره.
انقدر ساده هست که جایی برای خطا و اشتباه کردن نداره.
🔥کد کمتر، زندگی بهتر.
(تست هم کد محسوب میشه)
👻برای سوال مصاحبه خوبه👻
@purecoder_ir
هوش مصنوعی امروزه دقیقن انسان رو توی همون راستایی که داره حرکت میکنه تقویتش میکنه.
اگه یه انسان دانا، با دانش و متخصص ازش استفاده کنه، در مدت زمان کمتر به تولید محصول باکیفیت تر کمک میکنه.
اگه یه انسان خنگ، احمق و غیر متخصص ازش استفاده کنه هم در همون جهت به تولید یه محصول آشغال کمک میکنه. چون کار اون آدم تولید آشغال بوده و هوش مصنوعی هم کمکش میکنه.
سعی کن در درجه ی اول متخصص باشی و خنگ نباشی.
@purecoder_ir
اگه یه انسان دانا، با دانش و متخصص ازش استفاده کنه، در مدت زمان کمتر به تولید محصول باکیفیت تر کمک میکنه.
اگه یه انسان خنگ، احمق و غیر متخصص ازش استفاده کنه هم در همون جهت به تولید یه محصول آشغال کمک میکنه. چون کار اون آدم تولید آشغال بوده و هوش مصنوعی هم کمکش میکنه.
سعی کن در درجه ی اول متخصص باشی و خنگ نباشی.
@purecoder_ir
وقتی میبینم بعد این همه داد و فریاد که انقدر اضافه کاری نکنید و توی آپ های موبایل این معماری ها رو به کار نبرید و هنوز یه عده آموزشش میدن (اشتباه هم آموزش میدن) و یه عده هم با اشتیاق استفاده میکنن.😜
@purecoder_ir
@purecoder_ir
چیزی که گوگل برای معماری آپ های فلاتری پیشنهاد داده یک معماری لایه ای هست که وقتی بیزینس لاجیک داشته باشید یه چیزی شبیه به معماری هایی مثل کلین میشه (حتمن نباید اسمش آورده بشه...شبیهن) و وقتی که بیزینس لاجیک نداشته باشید یک معماری دو لایه خواهد بود.
همون چیزی که بارها میگفتیم که در عدم حضور بیزینس لاجیک (که توی اکثر اپ های موبایل رایجع) نیاری به لایه ها و کارهای اضافی نیست👍
امید است که پند بگیرید.
@purecoder_ir
همون چیزی که بارها میگفتیم که در عدم حضور بیزینس لاجیک (که توی اکثر اپ های موبایل رایجع) نیاری به لایه ها و کارهای اضافی نیست👍
امید است که پند بگیرید.
@purecoder_ir
کدوم پترن به اضافه کردن Middleware به پروسه ی اصلی کمک میکنه ؟
Anonymous Quiz
10%
Visitor
24%
Adapter
12%
Decorator
6%
Command
48%
نمیدونم، دیدن جواب
همیشه توی هر دوره ی آموزشی(با هر عنوانی، دوره برنامه نویسی، پکیج موفقیت و ...) ده تا بیست درصد افراد شرکت کننده موفق میشن. (در مورد درصد دقیق میشه بحث کرد و محل بحث فعلی ما نیست)
این ۲۰ درصد موفق، نشون دهنده ی خوب بودن دوره ی مورد نظر نیستن، چرا که این ها در هر صورت و با یکم بالا پایین موفق میشدن.
حالا من یه دوره درست میکنم و بعد از اتمام اون دوره ۲۰ درصد موفق رو بولد میکنم و میکنم توی چشم مخاطب و هیچ حرفی از ۸۰ درصدی که هیچی نشدن نمیزنم.
همه هم میگن عجب دوره ای، بهتر از این نمیشه 😳😳😳
@purecoder_ir
این ۲۰ درصد موفق، نشون دهنده ی خوب بودن دوره ی مورد نظر نیستن، چرا که این ها در هر صورت و با یکم بالا پایین موفق میشدن.
حالا من یه دوره درست میکنم و بعد از اتمام اون دوره ۲۰ درصد موفق رو بولد میکنم و میکنم توی چشم مخاطب و هیچ حرفی از ۸۰ درصدی که هیچی نشدن نمیزنم.
همه هم میگن عجب دوره ای، بهتر از این نمیشه 😳😳😳
@purecoder_ir
❓اگه در حین کلین کردن و ریفکتور کردن کد فهمیدیم که کاری که داریم در جهت کلین و خوانا تر کردن کد انجام میدیم، پرفورمنس رو یکم خراب میکنه، تکلیف چیه؟
✅مارتین فاولر میگه به ریفکتور کردنت ادامه بده و کدت رو کلین کن و بعدش اگه واقعن مشکل پرفورمنس داشتی حلش کن.
✅باب مارتین و Kent Beck میگن مشکلات پرفورمنسی رو تا خودشون رو نشون ندادن، الکی خودتو درگیرش نکن.
🔥در کل در مورد پرفورمنس نباید به صورت حسی عمل کنیم و بخوایم وسواس زیاد به خرج بدیم، باید اجازه بدیم هر موقع واقعن خودشو نشون داد، اقدام کنیم.
🔥این به معنای بد کد زدن نیست، فقط وسواس نداشته باشیم. در هر صورت تجربه های قبلی میتونن خیلی کمک کننده باشن.
🔥بعضی مواقع ممکنه بهبود پرفورمنس باعث بشه کد یکم ناخواناتر بشه. (ممکنه)
@purecoder_ir
✅مارتین فاولر میگه به ریفکتور کردنت ادامه بده و کدت رو کلین کن و بعدش اگه واقعن مشکل پرفورمنس داشتی حلش کن.
✅باب مارتین و Kent Beck میگن مشکلات پرفورمنسی رو تا خودشون رو نشون ندادن، الکی خودتو درگیرش نکن.
🔥در کل در مورد پرفورمنس نباید به صورت حسی عمل کنیم و بخوایم وسواس زیاد به خرج بدیم، باید اجازه بدیم هر موقع واقعن خودشو نشون داد، اقدام کنیم.
🔥این به معنای بد کد زدن نیست، فقط وسواس نداشته باشیم. در هر صورت تجربه های قبلی میتونن خیلی کمک کننده باشن.
🔥بعضی مواقع ممکنه بهبود پرفورمنس باعث بشه کد یکم ناخواناتر بشه. (ممکنه)
@purecoder_ir
تیم های مختلف یک سازمان نباید انقدری بزرگ بشن که مدیریت تیم و ارتباط و هماهنگی بین اعضای تیم سخت بشه.
توی آمازون از این قانون دم دستی استفاده میکنن 👆👆
@purecoder_ir
توی آمازون از این قانون دم دستی استفاده میکنن 👆👆
@purecoder_ir
بنظرت input validation (ورودی های کاربر) چه لاجیکی محسوب میشه؟
(میتونه آپ بکند باشه و مثلن body متد post رو در نظر بگیریم، یا آپ فرانت باشه و ...)
(اگه توضیحی داری کامنت بگذار)
(میتونه آپ بکند باشه و مثلن body متد post رو در نظر بگیریم، یا آپ فرانت باشه و ...)
(اگه توضیحی داری کامنت بگذار)
Anonymous Poll
67%
Presentation Logic
11%
Datasource Logic
22%
Domain Logic
توسعه ی نرم افزار مثل کار متخصص های زیبایی نیست که یه قالب دارن و همه آدم ها رو یه شکل درست میکنن، باید هر جایی متناسب با خودش تصمیم گیری و عمل بشه. اینکه یه شابلون داشته باشیم و همه چیز رو شبیه هم دربیاریم، اینجا پذیرفته نیست.
@purecoder_ir
@purecoder_ir
🔥Declarative UI Frameworks
✅jetpack compose
✅swiftui
✅Flutter
🔥بنظرم فلاتر با فاصله ی زیاد قشنگتره و زبان دارت، زبانی مناسبتر برای این هدف
🟢شما هم میتونید نظرتون رو بگید...
@purecoder_ir
✅jetpack compose
@Composable
fun MyComponent(
displayString: String
) {
Text(displayString)
}
✅swiftui
struct MyComponent: View {
var displayString: String
var body: some View {
Text(displayString)
}
}
✅Flutter
class MyComponent extends StatelessWidget {
final String displayString;
MyComponent({required this.displayString});
@override
Widget build(BuildContext context) {
return Text(displayString);
}
}
🔥بنظرم فلاتر با فاصله ی زیاد قشنگتره و زبان دارت، زبانی مناسبتر برای این هدف
🟢شما هم میتونید نظرتون رو بگید...
@purecoder_ir
🔥Backend Frameworks
✅Asp.net Core
✅Laravel
✅Spring Boot
@purecoder_ir
✅Asp.net Core
[Route("api/[controller]")]
[ApiController]
public class GreetingController : ControllerBase
{
// GET api/greeting
[HttpGet]
public IActionResult Get()
{
return Ok("Hello from ASP.NET Core!");
}
}
✅Laravel
class GreetingController extends Controller
{
// GET /api/greeting
public function index()
{
return response()->json('Hello from Laravel!');
}
}
Route::get('greeting', [GreetingController::class, 'index']);
✅Spring Boot
@RestController
public class GreetingController {
// GET /api/greeting
@GetMapping("/api/greeting")
public String getGreeting() {
return "Hello from Spring Boot!";
}
}
@purecoder_ir
🔥Backend Frameworks
✅Vania
✅Nestjs
✅Ruby on Rails
@purecoder_ir
✅Vania
class GreetingController extends Controller
{
// GET /api/greeting
Future index() async
{
retuen Response.html('Hello From Vania');
}
}
Route.get('/greeting',GreetingController().index);
✅Nestjs
@Controller('api')
export class GreetingController {
@Get('greeting')
getGreeting(): string {
return 'Hello from NestJS!';
}
}
✅Ruby on Rails
class GreetingController < ApplicationController
def greeting
render json: { message: 'Hello from Ruby on Rails!' }
end
end
Rails.application.routes.draw do
get 'api/greeting', to: 'greeting#greeting'
end
@purecoder_ir
🔥 Test Frameworks
✅XUnit (C#)
✅JUnit (JAVA)
✅Dart
✅بهترین و مدرن ترین گزینه xunit هست. JUnit وصله پینه زیاد داره و با فرهنگ حال و حاضر مچ نیست، ولی قابل قبوله و همچنان یه گزینه خوب محسوب میشه.
✅دارت شبیه JUnit هست.
@purecoder_ir
✅XUnit (C#)
public class CalculatorTests
{
[Fact]
public void Add_TwoNumbers_ReturnsSum()
{
// Arrange
var a = 2;
var b = 3;
// Act
var result = Add(a, b);
// Assert
Assert.Equal(5, result);
}
private int Add(int x, int y)
{
return x + y;
}
}
✅JUnit (JAVA)
class CalculatorTests {
@Test
void add_TwoNumbers_ReturnsSum() {
// Arrange
int a = 2;
int b = 3;
// Act
int result = add(a, b);
// Assert
assertEquals(5, result);
}
private int add(int x, int y) {
return x + y;
}
}
✅Dart
void main() {
test('add_TwoNumbers_ReturnsSum', () {
// Arrange
final a = 2;
final b = 3;
// Act
final result = add(a, b);
// Assert
expect(result, equals(5));
});
}
✅بهترین و مدرن ترین گزینه xunit هست. JUnit وصله پینه زیاد داره و با فرهنگ حال و حاضر مچ نیست، ولی قابل قبوله و همچنان یه گزینه خوب محسوب میشه.
✅دارت شبیه JUnit هست.
@purecoder_ir
انیمیشن ها توی فلاتر از کدوم پترن استفاده میکنن ؟
Anonymous Quiz
10%
Decorator
12%
Composite
36%
Observer
4%
Visitor
38%
نمیدونم، دیدن جواب