خواندن کد- از کجا بفهمم تازه کارم یا حرفهای


مقدمه : تفاوت خواندن کد برنامه نویس حرفه ای و تازه کار
خواندن کد یکی از مهارتهای اصلی برنامهنویسی است، اما هر برنامهنویسی به یک شکل کد را پردازش میکند.
یک برنامه نویس تازهکار ممکن است فقط خطوط کد و آنچه چاپ میشود را ببیند، در حالی که یک برنامه نویس حرفهای ساختار، وراثت و جریان دادهها را در ذهن خود مدلسازی میکند.
در این مقاله با یک مثال ساده از کلاس و زیرکلاس در Kotlin، که ( میتونه مقدمه ای اموزشی برای مبحث وراثت در کاتلین هم در نظر گرفته بشه ) تفاوت خواندن کدِ این دو گروه را بررسی میکنیم.
۱. مثال کد
// کلاس پایه
open class BankAccount(val accountNumber: Int, var accountBalance: Double) {
open fun displayBalance() {
println("Account number: $accountNumber")
println("Balance: $accountBalance")
}
}
// زیرکلاس
class SavingsAccount(accountNumber: Int, accountBalance: Double) : BankAccount(accountNumber, accountBalance) {
var interestRate: Double = 0.0
fun calculateInterest(): Double {
return interestRate * accountBalance
}
override fun displayBalance() {
println("Number $accountNumber")
println("Current balance is $accountBalance")
println("Prevailing interest rate is $interestRate")
}
}
۲. دید برنامهنویس تازهکار
تازهکارها معمولاً کد را خط به خط و ساده میخوانند:
- BankAccount یک کلاس پایه است.
- SavingsAccount کلاس فرزند است که از BankAccount ارث میبرد.
- calculateInterest() تابعی برای محاسبه بهره است.
- displayBalance() اطلاعات حساب را چاپ میکند.
و تمام ، در این جا نکته که هست :
تمرکز اصلی تازهکار روی کارکرد ظاهری کد و خروجی آن است، نه ساختار یا جریان دادهها.
و اگر این دیدگاه یا روش خواندن کد عوض نشه ، در اینده فهم مطالب پیچیده که ، نیاز به دانش عمیق داره ، مشکل میشه و همچنین دیباگ کردن در پروژه های بزرگ خیلی زمان برخواهد شد
اما بیان به دیدگاه یه حرفه ای نگاه کنیم .
۳. دید برنامهنویس حرفهای
حرفهایها کد را ساختاری و مفهومی پردازش میکنند:
- class SavingsAccount → تعریف کلاس جدید برای ارث بری هست
- : BankAccount → مشخص میکند کلاس والد است که کلاسه ای دیگه از اون ارث بری میکنند
- Open : این واژه ، برای این است که روی کلاس های والد استفاده میشه تا قابلیت ارث بری از اون ها فعال بشه
- constructor : مفهومی که در کلاس ها استفاده میشه که برای مقدار دهی به ها که در ساخت کلاس نیاز است که در اول این کار انجام بشه
- constructor(accountNumber: Int, accountBalance: Double) → پارامترها و نحوه انتقال آنها به کلاس والد
- var interestRate: Double → متغیر داخلی کلاس
- fun calculateInterest(): Double → تابع با نوع خروجی مشخص
- override fun displayBalance() → بازنویسی تابع والد برای تغییر رفتار چاپ ، چون اگر کلاس والد نیاز های من رو پوشش نده ، باید تابع رو باز نویسی کنم
مطالعه ای بیشتر : تفاوت پارامتر و آرگیومنت
ذهن حرفهای کد را به مدل ذهنی کلاسها و ارتباط بین آنها ترجمه میکند، نه فقط دستورالعملها.
و همیچنین ذهن یه برنامه نویس حرفه راه های خلاقانه ای هم تولید میکنه مثلا در ادامه همین کد ،
// زیرکلاس
class SavingsAccount(accountNumber: Int, accountBalance: Double) : BankAccount(accountNumber, accountBalance) {
var interestRate: Double = 0.0
fun calculateInterest(): Double {
return interestRate * accountBalance
}
override fun displayBalance() {
super.displayBalance()
println("Prevailing interest rate is $interestRate")
}
}
- super : با این واژه من میتونم به تابع ها کلاس والد هم دسترسی پیدا کنم پس میتونم داخل تابع به جای کد های تکراری از این کد استفاده کنم : super.displayBalance() ( اگه به کد قبلی نگاه کنید دو خط از کد قبلی حذف و این تابع در اینجا جای گزین اون ها شده با همون کار کرد ! )
جمعبندی
- تازهکار: روی خروجی و عملکرد مستقیم کد تمرکز دارد.
- حرفهای: روی ساختار، روابط، پارامترها و جریان دادهها تمرکز میکند.
- یادگیری خواندن حرفهای کد یعنی توانایی ساخت مدل ذهنی کد و رفتارهای آن.
- با تمرین و مشاهده کدهای مختلف، ذهن شما به تدریج از دید خط به خط به دید ساختاری و حرفهای منتقل میشود .
قانون طلایی
- البته دانش فنی هر چه قدر قدرتمند باشه ، راحتر روابط بین کد ها رو درک میکنید و خواندن کد برای شما اسان تر میشه
💡 نکته عملی:
میتوانید این روش را با مثالهای واقعی پروژهها تمرین کنید. هر تابع، کلاس یا زیرکلاسی را که میبینید، ابتدا با دید تازهکار و سپس با دید حرفهای تحلیل کنید.
موفق باشید 🍎







