در این مطلب، ویدئو طراحی ماژولار در پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:36:46
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:01,810 –> 00:00:16,050
[موسیقی]
2
00:00:17,920 –> 00:00:19,600
سلام، جیسون گورمن از Codemanship
3
00:00:19,600 –> 00:00:20,960
4
00:00:20,960 –> 00:00:23,279
با ویدیویی در مورد اصول طراحی مدولار
5
00:00:23,279 –> 00:00:26,240
برای برنامه نویسان پایتون،
6
00:00:26,240 –> 00:00:28,480
بنابراین در ویدیوی قبلی ما به اصول طراحی ساده نگاه کردیم،
7
00:00:28,480 –> 00:00:30,640
8
00:00:30,640 –> 00:00:32,558
فقط یک خلاصه سریع از آنهایی که قبل از هر
9
00:00:32,558 –> 00:00:34,320
چیز باید مطمئن شویم که کد ما کار
10
00:00:34,320 –> 00:00:36,160
می کند و به کار خود ادامه می دهد، بنابراین
11
00:00:36,160 –> 00:00:39,520
ما همیشه در حال آزمایش کد خود هستیم، پس
12
00:00:39,520 –> 00:00:40,879
باید مطمئن شویم که کد ما به راحتی
13
00:00:40,879 –> 00:00:42,800
قابل درک است همانطور که
14
00:00:42,800 –> 00:00:45,280
کن بک می گوید، باید مطمئن شویم
15
00:00:45,280 –> 00:00:47,600
که کد به وضوح هدف خود را
16
00:00:47,600 –> 00:00:48,800
بیان می کند. آیا میتوانید
17
00:00:48,800 –> 00:00:50,480
با خواندن کد متوجه شوید که کد چه کار میکند
18
00:00:50,480 –> 00:00:52,000
، بنابراین ما به
19
00:00:52,000 –> 00:00:53,600
دنبال فرصتهایی برای معرفی
20
00:00:53,600 –> 00:00:56,960
نامهایی میگردیم که توضیح دهند چه اتفاقی میافتد،
21
00:00:56,960 –> 00:00:58,800
سپس به دنبال تکرار در کد خود میگردیم
22
00:00:58,800 –> 00:01:00,559
و آن را حذف میکنیم، اما فقط در صورتی
23
00:01:00,559 –> 00:01:02,160
که کد را سختتر نکند. برای
24
00:01:02,160 –> 00:01:04,000
درک
25
00:01:04,000 –> 00:01:06,320
و سپس در نهایت از کجا
26
00:01:06,320 –> 00:01:07,040
نام گرفته است،
27
00:01:07,040 –> 00:01:09,360
ما سعی می کنیم این کار را به ساده ترین شکل
28
00:01:09,360 –> 00:01:10,720
ممکن انجام دهیم، زیرا
29
00:01:10,720 –> 00:01:13,439
kenpook آن را بیان می کند، اگر دوست دارید از تعداد کمی از قطعات استفاده
30
00:01:13,439 –> 00:01:14,720
کنید
31
00:01:14,720 –> 00:01:17,840
و ما در مورد اینکه چگونه توسعه دهندگان
32
00:01:17,840 –> 00:01:19,439
اغلب متوجه می شوند که l
33
00:01:19,439 –> 00:01:21,040
گاهی اوقات انجام سادهترین کار
34
00:01:21,040 –> 00:01:23,040
کمی سختتر از انجام یک کار
35
00:01:23,040 –> 00:01:25,280
پیچیده است
36
00:01:25,280 –> 00:01:27,200
و این همه چیز عالی است، شما
37
00:01:27,200 –> 00:01:28,960
تعجب خواهید کرد که چگونه
38
00:01:28,960 –> 00:01:31,040
طرحهای پیچیدهای میتوانند ظاهر شوند، زیرا ما این
39
00:01:31,040 –> 00:01:32,880
اصول را بارها و بارها با هر
40
00:01:32,880 –> 00:01:34,880
آزمون جدیدی که به آن اضافه میکنیم، بهخصوص زمانی که ما اضافه میکنیم،
41
00:01:34,880 –> 00:01:36,960
به کار میبریم. تکرار را حذف می کنیم
42
00:01:36,960 –> 00:01:38,560
زیرا نقطه مقابل
43
00:01:38,560 –> 00:01:40,640
کپی استفاده مجدد است
44
00:01:40,640 –> 00:01:42,159
و این یک راه عالی برای کشف
45
00:01:42,159 –> 00:01:44,240
آن نوع انتزاعات قابل استفاده مجدد است که
46
00:01:44,240 –> 00:01:46,159
ما
47
00:01:46,159 –> 00:01:47,920
روشی بسیار عینی برای انجام آن در کد خود معرفی می
48
00:01:47,920 –> 00:01:49,439
کنیم، بنابراین به جای برنامه ریزی برای داشتن آنها، نیاز به آنها را کشف می کنیم.
49
00:01:49,439 –> 00:01:52,960
50
00:01:53,280 –> 00:01:56,320
آنها خیلی چیزهای خوبی هستند و
51
00:01:56,320 –> 00:01:58,479
اگر بیشتر توسعه دهندگان
52
00:01:58,479 –> 00:02:01,280
اصول طراحی ساده را رعایت کنند،
53
00:02:01,280 –> 00:02:01,680
54
00:02:01,680 –> 00:02:03,360
بسیاری از کدهای موجود در آنجا بسیار قابل
55
00:02:03,360 –> 00:02:06,000
نگهداری هستند، اما می توان
56
00:02:06,000 –> 00:02:06,960
کدی نوشت که
57
00:02:06,960 –> 00:02:09,440
همه آن جعبه ها را بگیرد اما همچنان با
58
00:02:09,440 –> 00:02:11,200
مشکل مواجه شود. به تغییر
59
00:02:11,200 –> 00:02:13,599
کد می رسد هزینه تغییر کد
60
00:02:13,599 –> 00:02:14,480
و این چیزی است که ما
61
00:02:14,480 –> 00:02:15,840
در این ویدیو در مورد
62
00:02:15,840 –> 00:02:16,640
اصول
63
00:02:16,640 –> 00:02:20,160
مدولار d صحبت خواهیم کرد esign بنابراین ما از نظر
64
00:02:20,160 –> 00:02:21,680
ماژول ها فکر می کنیم بنابراین اگر به پایتون فکر می کنیم
65
00:02:21,680 –> 00:02:23,840
ممکن است به عنوان مثال در مورد
66
00:02:23,840 –> 00:02:26,720
ماژول ها از نظر فایل های پایتون صحبت کنیم اما من
67
00:02:26,720 –> 00:02:28,560
امروز در مورد ماژول ها
68
00:02:28,560 –> 00:02:30,400
هم از نظر فایل ها و هم
69
00:02:30,400 –> 00:02:32,319
از نظر کلاس ها
70
00:02:32,319 –> 00:02:34,319
صحبت خواهم کرد. بنابراین ما به شی
71
00:02:34,319 –> 00:02:35,920
گرا فکر می کنیم که امروز کلاه های oo خود را بر سر می گذاریم
72
00:02:35,920 –> 00:02:38,560
و اولین اصل
73
00:02:38,560 –> 00:02:39,599
طراحی مدولار
74
00:02:39,599 –> 00:02:42,480
این است که هر ماژول چقدر باید انجام دهد
75
00:02:42,480 –> 00:02:42,879
و در
76
00:02:42,879 –> 00:02:45,360
حالت ایده آل هر ماژول باید فقط
77
00:02:45,360 –> 00:02:46,560
یک کار را انجام دهد
78
00:02:46,560 –> 00:02:48,720
یا فقط یک دلیل داشته باشد. برای تغییر، بنابراین
79
00:02:48,720 –> 00:02:49,920
ما در یک
80
00:02:49,920 –> 00:02:52,000
دقیقه نمونه ای از کدهای بسیار ساده را
81
00:02:52,000 –> 00:02:53,920
می بینیم که تمام جعبه های طراحی ساده را می گیرد،
82
00:02:53,920 –> 00:02:55,040
83
00:02:55,040 –> 00:02:57,280
اما کمی مشکل وجود دارد از این
84
00:02:57,280 –> 00:02:58,959
نظر
85
00:02:58,959 –> 00:03:00,560
که ما یک ماژول داریم که دو
86
00:03:00,560 –> 00:03:02,560
قطعه کار مجزا را انجام می دهد.
87
00:03:02,560 –> 00:03:04,480
و اگر بخواهیم نحوه انجام
88
00:03:04,480 –> 00:03:06,159
یک کار مستقل از
89
00:03:06,159 –> 00:03:07,920
بقیه را تغییر دهیم، نمیتوانیم، زیرا همه آنها در
90
00:03:07,920 –> 00:03:08,959
یک
91
00:03:08,959 –> 00:03:12,319
ماژول هستند، دلیل دیگر
92
00:03:12,319 –> 00:03:13,840
اینکه مهم است که ماژولها فقط یک کار را انجام دهند
93
00:03:13,840 –> 00:03:15,920
این است که اوم،
94
00:03:15,920 –> 00:03:17,920
خب من میخواهم از um قیاس استفاده کنید
95
00:03:17,920 –> 00:03:19,760
از um
96
00:03:19,760 –> 00:03:22,319
hi-fi های مدولار، بنابراین اگر
97
00:03:22,319 –> 00:03:24,000
با مفهوم hi-fi ماژولار آشنا هستید، Hi-Fi
98
00:03:24,000 –> 00:03:26,319
یکپارچه خود را دارید
99
00:03:26,319 –> 00:03:28,239
که در آن همه یک جعبه است
100
00:03:28,239 –> 00:03:29,920
و در آن جعبه ترکیب شده است، ممکن است
101
00:03:29,920 –> 00:03:30,560
یک
102
00:03:30,560 –> 00:03:33,040
پخش کننده سی دی و یک رادیو و آمپلیفایر و
103
00:03:33,040 –> 00:03:34,560
بلندگوها
104
00:03:34,560 –> 00:03:35,680
و سپس پنجهای ماژولار خود را
105
00:03:35,680 –> 00:03:37,440
دارید که در آن یک جعبه دارید که
106
00:03:37,440 –> 00:03:39,280
هر یک از این کارها را انجام میدهد، در اصل
107
00:03:39,280 –> 00:03:40,959
شما یک صفحه گردان
108
00:03:40,959 –> 00:03:43,760
یا یک نوار، یک نوار کاست یا یک دستگاه پخش سیدی
109
00:03:43,760 –> 00:03:46,560
یا موارد دیگر و غیره دارید.
110
00:03:46,560 –> 00:03:48,560
با یک hi-fi یکپارچه، ما یک
111
00:03:48,560 –> 00:03:50,720
انتخاب داریم، بنابراین من یک Hi-Fi یکپارچه jvc کوچک و دوست داشتنی
112
00:03:50,720 –> 00:03:52,319
دارم که بیش
113
00:03:52,319 –> 00:03:54,239
از 20 سال است که دارم،
114
00:03:54,239 –> 00:03:57,519
اوم، و شما متوجه می شوید که خوب کار می کند، اما
115
00:03:57,519 –> 00:04:00,799
شما سی دی پلیر jvc را با نمایشگر jvc
116
00:04:00,799 –> 00:04:02,799
mini که قدمتش چند است
117
00:04:02,799 –> 00:04:05,040
و با رادیو jvc با
118
00:04:05,040 –> 00:04:06,319
آمپلی فایر jvc و
119
00:04:06,319 –> 00:04:07,760
بلندگوهای jvc و این تنها انتخاب شماست
120
00:04:07,760 –> 00:04:09,920
واقعاً با
121
00:04:09,920 –> 00:04:11,920
hi-fi ماژولار می توانید یک
122
00:04:11,920 –> 00:04:13,200
صفحه گردان سونی
123
00:04:13,200 –> 00:04:16,560
با سی دی پلیر یاماها و آمپلی فایر دنون داشته باشید
124
00:04:16,560 –> 00:04:18,720
و
125
00:04:18,720 –> 00:04:20,320
هر بلندگوی که بخواهید می توانید
126
00:04:20,320 –> 00:04:21,839
انتخاب های زیادی دارید
127
00:04:21,839 –> 00:04:23,440
که چگونه می توانید همکاری کنید این ماژول های مختلف
128
00:04:23,440 –> 00:04:26,560
را در یک سیستم Hi-Fi قرار دهید
129
00:04:26,560 –> 00:04:28,639
و زمانی که هر یک
130
00:04:28,639 –> 00:04:31,280
از این ماژول ها فقط یک کار را انجام می دهد، آن را ترکیب بندی می
131
00:04:31,280 –> 00:04:32,720
نامیم، انتخاب های بیشتری در مورد
132
00:04:32,720 –> 00:04:34,320
نحوه ترکیب ماژول ها
133
00:04:34,320 –> 00:04:37,040
برای انجام کارهای جدید دریافت می کنیم، بنابراین به این دو
134
00:04:37,040 –> 00:04:38,639
دلیل، یکی چون ممکن است بخواهیم
135
00:04:38,639 –> 00:04:40,160
یک کد را بدون
136
00:04:40,160 –> 00:04:41,919
نیاز به شکستن بقیه
137
00:04:41,919 –> 00:04:44,080
آن تغییر دهید، بنابراین وقتی آن را به ماژولهای جداگانه تقسیم
138
00:04:44,080 –> 00:04:45,040
میکنیم،
139
00:04:45,040 –> 00:04:48,000
جدا کردن آن نگرانیها
140
00:04:48,000 –> 00:04:50,400
و تغییر یک چیز در یک مکان بسیار آسانتر است،
141
00:04:50,400 –> 00:04:53,440
اما همچنین
142
00:04:53,440 –> 00:04:55,440
143
00:04:55,440 –> 00:04:57,120
زمانی که هر یک از سیستمها ترکیببندی بسیار بیشتری دریافت میکنیم. ماژول ها فقط یک کار را انجام می دهند
144
00:04:57,120 –> 00:04:58,479
145
00:04:58,479 –> 00:04:59,759
، نکته بعدی که باید در مورد ماژول ها فکر کنیم
146
00:04:59,759 –> 00:05:02,000
این است که
147
00:05:02,000 –> 00:05:03,280
آنها چقدر در مورد یکدیگر می دانند و
148
00:05:03,280 –> 00:05:03,919
قانون کلی
149
00:05:03,919 –> 00:05:06,400
این است که هر چه کمتر در مورد یکدیگر بدانند
150
00:05:06,400 –> 00:05:07,199
بهتر است
151
00:05:07,199 –> 00:05:10,400
بنابراین دوباره به hifi ماژولار خود بازگردیم.
152
00:05:10,400 –> 00:05:12,880
ما میتوانیم ماژولها را خیلی راحت به هم وصل کنیم،
153
00:05:12,880 –> 00:05:14,560
زیرا همه آنها رابطهای بسیار سادهای
154
00:05:14,560 –> 00:05:15,840
دارند،
155
00:05:15,840 –> 00:05:17,520
اگر مجبور
156
00:05:17,520 –> 00:05:19,840
بودم بدنه را از روی صفحه گردان خود جدا کنم
157
00:05:19,840 –> 00:05:22,160
و سیمها را به معنای واقعی کلمه لحیم کنم،
158
00:05:22,160 –> 00:05:24,479
رابط بسیار سادهای دارند. تمام
159
00:05:24,479 –> 00:05:26,400
کارهای داخلی الکترونیک داخلی صفحه گردان من را
160
00:05:26,400 –> 00:05:29,120
به منظور اتصال آن به یک تقویت کننده
161
00:05:29,120 –> 00:05:31,280
و خوب که خوب
162
00:05:31,280 –> 00:05:32,880
نیست که خیلی ساده یا ارزان
163
00:05:32,880 –> 00:05:35,840
یا کم خطر تغییر نمی کند و این
164
00:05:35,840 –> 00:05:38,400
چیزی شبیه به ماژول ها در نرم افزار است
165
00:05:38,400 –> 00:05:40,560
وقتی که آنها نحوه انجام کارهای خود را نشان دهید،
166
00:05:40,560 –> 00:05:41,680
به ویژه اینکه چگونه از
167
00:05:41,680 –> 00:05:44,160
چه داده هایی برای انجام کارهای
168
00:05:44,160 –> 00:05:45,520
خود برای مشتریان خود استفاده می کنند،
169
00:05:45,520 –> 00:05:47,360
سپس وقتی نحوه کار را تغییر می دهیم، در
170
00:05:47,360 –> 00:05:49,039
نهایت مجبور می شویم مشتریان را نیز تغییر دهیم
171
00:05:49,039 –> 00:05:49,840
172
00:05:49,840 –> 00:05:51,840
تا مشتریان کمتر در مورد
173
00:05:51,840 –> 00:05:53,440
ماژول هایی که استفاده می کنند بدانند.
174
00:05:53,440 –> 00:05:56,240
بهتر است اکنون سبکی از طراحی
175
00:05:56,240 –> 00:05:56,720
در اینجا وجود داشته باشد
176
00:05:56,720 –> 00:05:59,759
که معمولاً به آن بگو نپرس
177
00:05:59,759 –> 00:06:01,039
می گویند و
178
00:06:01,039 –> 00:06:02,639
وقتی در مورد بوی کدی به نام حسادت ویژگی صحبت می کنیم نمونه ای از آن را خواهیم دید،
179
00:06:02,639 –> 00:06:04,400
180
00:06:04,400 –> 00:06:06,080
اما قاعده کلی
181
00:06:06,080 –> 00:06:07,840
در اینجا این است که ماژولها باید
182
00:06:07,840 –> 00:06:09,360
183
00:06:09,360 –> 00:06:11,199
بهجای
184
00:06:11,199 –> 00:06:13,280
درخواست دادههای داخلی آن ماژول به یکدیگر بگویند که کارها را انجام دهند تا خودشان این کار را انجام
185
00:06:13,280 –> 00:06:14,720
دهند،
186
00:06:14,720 –> 00:06:16,800
بنابراین بگویید نپرسید و ما یک
187
00:06:16,800 –> 00:06:20,080
نمونه عملی از آن را در عرض یک دقیقه خواهیم دید، بنابراین
188
00:06:20,080 –> 00:06:21,440
آنها باید یک مورد را انجام دهند. کاری که آنها باید
189
00:06:21,440 –> 00:06:23,280
تا حد امکان کمتر در مورد یکدیگر
190
00:06:23,280 –> 00:06:24,880
بدانند، بنابراین باید عملکردهای داخلی خود را پنهان کنند،
191
00:06:24,880 –> 00:06:25,759
192
00:06:25,759 –> 00:06:29,360
به ویژه داده های داخلی خود را پنهان کنند
193
00:06:29,360 –> 00:06:32,800
و آخرین نوع از
194
00:06:32,800 –> 00:06:34,319
اره منبت کاری اره مویی برای
195
00:06:34,319 –> 00:06:35,520
برنامه نویسان پایتون آخرین چیزی که باید
196
00:06:35,520 –> 00:06:36,479
در مورد آن بدانید این
197
00:06:36,479 –> 00:06:38,160
است که ماژول ها از خدمات یکدیگر استفاده می کنند.
198
00:06:38,160 –> 00:06:40,319
این کار باید به
199
00:06:40,319 –> 00:06:42,319
گونه ای انجام شود که جایگزینی
200
00:06:42,319 –> 00:06:44,479
ماژول تامین کننده با یک
201
00:06:44,479 –> 00:06:46,560
پیاده سازی متفاوت بدون نیاز به
202
00:06:46,560 –> 00:06:49,039
بازنویسی مشتری در تیم های عملی آسان باشد، به این معنی
203
00:06:49,039 –> 00:06:51,120
که مشتری نباید بداند
204
00:06:51,120 –> 00:06:53,360
که از چه پیاده سازی تامین کننده
205
00:06:53,360 –> 00:06:54,479
استفاده می کند،
206
00:06:54,479 –> 00:06:58,080
بنابراین باید به آن متصل شود.
207
00:06:58,080 –> 00:07:00,960
انتزاعات به پیاده سازی های مشخص نیست، بنابراین آنچه
208
00:07:00,960 –> 00:07:02,880
من در اینجا می گویم این است که وابستگی ها برای
209
00:07:02,880 –> 00:07:05,280
مشتریان ما باید به راحتی
210
00:07:05,280 –> 00:07:07,199
با استفاده از مکانیزمی به نام
211
00:07:07,199 –> 00:07:09,199
تزریق وابستگی قابل تعویض باشند
212
00:07:09,199 –> 00:07:11,120
تا همکاران
213
00:07:11,120 –> 00:07:12,960
با اشیایی که به آنها می گویند کار کنند
214
00:07:12,960 –> 00:07:14,720
یا ماژول هایی که به آنها می گویند کار کنند. چیزهای do
215
00:07:14,720 –> 00:07:15,759
216
00:07:15,759 –> 00:07:18,000
از بیرون به
217
00:07:18,000 –> 00:07:19,599
آنها داده می شود و یا در سازنده یا به عنوان متو در آن تزریق می شوند.
218
00:07:19,599 –> 00:07:22,720
پارامتر d
219
00:07:22,720 –> 00:07:23,759
یا اگر برنامهنویسی تابعی را
220
00:07:23,759 –> 00:07:25,840
بهعنوان یک پارامتر تابعی انجام میدهید، به
221
00:07:25,840 –> 00:07:28,160
طوری که مشتری تصمیم میگیرد من میخواهم
222
00:07:28,160 –> 00:07:30,160
از این پیادهسازی استفاده کنید و این
223
00:07:30,160 –> 00:07:33,280
و تامینکننده نیازی به دانستن
224
00:07:33,280 –> 00:07:37,520
اینکه از چه پیادهسازی استفاده میکند،
225
00:07:37,520 –> 00:07:39,919
به نظر میرسد. به عنوان
226
00:07:39,919 –> 00:07:42,240
نوعی سه پایه که طراحی ماژولار خوب تری روی آن قرار
227
00:07:42,240 –> 00:07:43,599
دارد
228
00:07:43,599 –> 00:07:45,280
، پایه اول سه پایه این است که هر یک
229
00:07:45,280 –> 00:07:47,599
از آن ماژول ها فقط باید یک کار را انجام دهند
230
00:07:47,599 –> 00:07:50,240
، پایه دوم سه پایه این است که
231
00:07:50,240 –> 00:07:51,759
ماژول ها باید تا حد ممکن کمتر در مورد یکدیگر اطلاعات داشته
232
00:07:51,759 –> 00:07:53,280
باشند. باید کارهای داخلی خود را پنهان کنند
233
00:07:53,280 –> 00:07:54,879
234
00:07:54,879 –> 00:07:56,840
، سبک طراحی نامیده میشود بگو نپرس
235
00:07:56,840 –> 00:07:58,160
236
00:07:58,160 –> 00:08:00,080
و در نهایت وابستگیهای ماژولها باید
237
00:08:00,080 –> 00:08:01,280
238
00:08:01,280 –> 00:08:03,039
معمولاً با تزریق وابستگی قابل تعویض باشند، بنابراین
239
00:08:03,039 –> 00:08:05,440
ماژولها از بیرون با
240
00:08:05,440 –> 00:08:07,039
عبور دادن همکارانشان
241
00:08:07,039 –> 00:08:10,000
به داخل تشکیل میشوند، بنابراین اگر ماژول نیازی به تغییر نداشته باشد، ماژولها باید تغییر
242
00:08:10,000 –> 00:08:11,280
کنند. آن را با یک پیاده سازی متفاوت عوض کنید
243
00:08:11,280 –> 00:08:13,039
244
00:08:13,039 –> 00:08:14,800
و این مورد به ویژه زمانی جالب است
245
00:08:14,800 –> 00:08:16,560
که ما در مورد
246
00:08:16,560 –> 00:08:18,960
um stubbing و تمسخر با استفاده از تست
247
00:08:18,960 –> 00:08:19,919
دوبل صحبت می کنیم،
248
00:08:19,919 –> 00:08:21,520
بنابراین یک رابطه بزرگ بین وجود دارد.
249
00:08:21,520 –> 00:08:24,400
ماژولار بودن و آزمایش پذیری واحد
250
00:08:24,400 –> 00:08:26,479
چقدر آسان است که
251
00:08:26,479 –> 00:08:28,319
وابستگی های خارجی مانند پایگاه های داده و سیستم های فایل را
252
00:08:28,319 –> 00:08:29,440
253
00:08:29,440 –> 00:08:31,759
با نسخه های خرد یا با نسخه های ساختگی تعویض
254
00:08:31,759 –> 00:08:33,360
کنیم، اما معماری خوب آن به طور کلی
255
00:08:33,360 –> 00:08:35,440
به ما انعطاف پذیری بسیار بیشتری در
256
00:08:35,440 –> 00:08:36,958
طراحی می دهد و می توانیم بدون نیاز به جایگزینی یک چیز با چیز
257
00:08:36,958 –> 00:08:37,760
دیگر
258
00:08:37,760 –> 00:08:39,599
هزاران تن
259
00:08:39,599 –> 00:08:40,799
از کدهای مشتری را بازنویسی کنید
260
00:08:40,799 –> 00:08:42,080
و خواهیم دید که در مثال کوچک ما چگونه کار میکند،
261
00:08:42,080 –> 00:08:45,120
262
00:08:45,120 –> 00:08:46,959
زیرا شما در
263
00:08:46,959 –> 00:08:49,120
پایتون کار میکنید، نیازی به دانستن
264
00:08:49,120 –> 00:08:49,600
265
00:08:49,600 –> 00:08:52,480
نوع چهارم طراحی مدولار ندارید، زیرا
266
00:08:52,480 –> 00:08:54,080
اینطور نیست. واقعاً اینقدر مهم نیست،
267
00:08:54,080 –> 00:08:56,320
اما همانطور که خواهیم دید،
268
00:08:56,320 –> 00:08:58,080
چیزی مربوط به آن وجود دارد که
269
00:08:58,080 –> 00:08:59,040
270
00:08:59,040 –> 00:09:00,800
اگر در حال کار با یک زبان تایپ ایستا هستید
271
00:09:00,800 –> 00:09:02,320
که آنچه را که ما سازگاری باینری می نامیم را اجرا می کند، باید به آن فکر
272
00:09:02,320 –> 00:09:04,720
273
00:09:04,720 –> 00:09:06,720
کنیم، یعنی اگر دوباره
274
00:09:06,720 –> 00:09:07,760
در جاوا یا c
275
00:09:07,760 –> 00:09:09,839
پلاس کار می کنید، برای مثال اگر
276
00:09:09,839 –> 00:09:12,240
کلاسی بنویسید که از کلاس دیگری استفاده می کند،
277
00:09:12,240 –> 00:09:15,200
اساساً این binding به گونه ای انجام می شود
278
00:09:15,200 –> 00:09:17,519
که اگر
279
00:09:17,519 –> 00:09:19,440
بخواهیم چیزی را در رابط آن منبع تغییر دهیم.
280
00:09:19,440 –> 00:09:21,760
کلاس r حتی اگر آن کلاینت
281
00:09:21,760 –> 00:09:22,720
از آن استفاده نمیکند
282
00:09:22,720 –> 00:09:24,800
، کلاینت باید دوباره کامپایل شود،
283
00:09:24,800 –> 00:09:27,200
دوباره آزمایش شده و مجدداً مستقر شود
284
00:09:27,200 –> 00:09:28,880
و البته این میتواند مشکلاتی ایجاد کند،
285
00:09:28,880 –> 00:09:30,560
بنابراین باید مطمئن شویم که
286
00:09:30,560 –> 00:09:32,959
رابطهای ما مخصوص کلاینت هستند
287
00:09:32,959 –> 00:09:34,880
که اگر کلاس c پلاس دارید و
288
00:09:34,880 –> 00:09:36,800
یک کلاینت از سه روش خود استفاده می کند
289
00:09:36,800 –> 00:09:38,480
اما از بقیه استفاده نمی کند،
290
00:09:38,480 –> 00:09:39,920
سپس روشی را به
291
00:09:39,920 –> 00:09:42,480
طور خاص برای آن کلاینت استخراج
292
00:09:42,480 –> 00:09:44,080
می کنیم تا فقط به
293
00:09:44,080 –> 00:09:46,320
رابطی متصل شود که شامل ویژگی هایی است
294
00:09:46,320 –> 00:09:47,600
295
00:09:47,600 –> 00:09:49,120
که اکنون استفاده می کند، این
296
00:09:49,120 –> 00:09:51,600
عبارت مهم است. استفاده از now
297
00:09:51,600 –> 00:09:53,839
در پایتون همانطور که خواهیم دید، یک
298
00:09:53,839 –> 00:09:55,760
طرف دیگر وجود دارد، زمانی که ما می توانیم
299
00:09:55,760 –> 00:09:57,040
300
00:09:57,040 –> 00:09:58,480
بسته به چیزهایی که
301
00:09:58,480 –> 00:10:00,640
واقعاً از آنها استفاده نمی کنیم، به عنوان مثال
302
00:10:00,640 –> 00:10:03,200
واردات استفاده نشده، واردات بدون استفاده مشکلاتی ایجاد می
303
00:10:03,200 –> 00:10:04,079
کند،
304
00:10:04,079 –> 00:10:05,920
زیرا اگر تصمیم بگیرم آن کلاس را جابجا کنم.
305
00:10:05,920 –> 00:10:07,440
به یک بسته متفاوت
306
00:10:07,440 –> 00:10:09,279
حتی اگر من از آن در این
307
00:10:09,279 –> 00:10:10,880
فایل خاص استفاده
308
00:10:10,880 –> 00:10:13,200
نمیکنم، اما در این ماژول خاص،
309
00:10:13,200 –> 00:10:14,959
همچنان میتوانیم در موقعیتی قرار بگیریم
310
00:10:14,959 –> 00:10:17,760
که آن ماژول را بشکنیم و
311
00:10:17,760 –> 00:10:19,519
به چیزهایی که استفاده نمیکنید وابسته نیست
312
00:10:19,519 –> 00:10:21,680
. s نوعی از طرف دیگر
313
00:10:21,680 –> 00:10:23,519
ارائه رابط های خاص مشتری است
314
00:10:23,519 –> 00:10:26,480
، هدف یکسان است
315
00:10:26,480 –> 00:10:28,720
و بسیار نزدیک به
316
00:10:28,720 –> 00:10:30,640
ماژول ها است که تا حد ممکن اطلاعات کمی در مورد
317
00:10:30,640 –> 00:10:33,519
بقیه سیستم دارند،
318
00:10:33,519 –> 00:10:35,040
بسیار خوب، بنابراین اینها
319
00:10:35,040 –> 00:10:36,240
اصول طراحی ماژولار هستند که ما در حال انجام آن هستیم.
320
00:10:36,240 –> 00:10:38,240
اکنون میخواهم یک نمایش کوچک انجام دهم،
321
00:10:38,240 –> 00:10:41,360
بنابراین من چند کد نمونه در اینجا دارم
322
00:10:41,360 –> 00:10:44,240
و این یک کد بسیار ساده است
323
00:10:44,240 –> 00:10:46,240
که قیمتها را برای
324
00:10:46,240 –> 00:10:49,360
فرشهای مجهز
325
00:10:49,360 –> 00:10:50,959
به فرش محاسبه میکند تا قیمت کت را محاسبه کنیم، ما باید
326
00:10:50,959 –> 00:10:52,240
طول و عرض
327
00:10:52,240 –> 00:10:54,880
اتاق را بدانیم. فرش قرار است وارد شود،
328
00:10:54,880 –> 00:10:56,320
باید بدانیم قیمت هر
329
00:10:56,320 –> 00:10:58,320
متر مربع ما برای آن فرش
330
00:10:58,320 –> 00:11:00,480
چقدر است و سیاست قیمت گذاری چیست که آیا
331
00:11:00,480 –> 00:11:02,160
می خواهیم به نزدیکترین متر مربع گرد کنیم،
332
00:11:02,160 –> 00:11:03,279
333
00:11:03,279 –> 00:11:05,120
بنابراین اگر 10 و نیم متر مربع
334
00:11:05,120 –> 00:11:07,200
فرش است.
335
00:11:07,200 –> 00:11:09,680
زمانی که ما آن را جا دادیم یا نه، 11 شارژ میشود
336
00:11:09,680 –> 00:11:11,680
، این درست یا نادرست است
337
00:11:11,680 –> 00:11:13,279
و من چند آزمایش در اینجا انجام دادهام،
338
00:11:13,279 –> 00:11:14,480
بنابراین قبل از انجام هر کاری،
339
00:11:14,480 –> 00:11:16,399
جعبههای طراحی ساده را از بین میبریم.
340
00:11:16,399 –> 00:11:18,000
در غیر این صورت
341
00:11:18,000 –> 00:11:19,920
اجازه دهید f اول از همه تستهایمان را اجرا کنیم، اوه
342
00:11:19,920 –> 00:11:21,600
، اشتباه است،
343
00:11:21,600 –> 00:11:24,880
اجازه دهید تستهایمان را اجرا کنیم تا من یک
344
00:11:24,880 –> 00:11:27,120
ماژول تست کوچک در آنجا داشته باشم و در داخل آن
345
00:11:27,120 –> 00:11:28,560
فقط
346
00:11:28,560 –> 00:11:30,320
347
00:11:30,320 –> 00:11:33,120
تکی را اجرا کنیم. تست
348
00:11:33,120 –> 00:11:36,720
نقل قول فرش تست فرش کاملا
349
00:11:36,720 –> 00:11:39,920
تست نقل قول فرش
350
00:11:39,920 –> 00:11:41,920
و امیدواریم که دو تست قبولی را دریافت کنیم، دو
351
00:11:41,920 –> 00:11:43,680
تست موفقیت آمیز دوست داشتنی،
352
00:11:43,680 –> 00:11:45,200
بنابراین یک تست داریم که در آن
353
00:11:45,200 –> 00:11:46,480
درست نیستیم در آزمون دیگری برای
354
00:11:46,480 –> 00:11:48,240
زمانی که داریم um را گرد می کنیم،
355
00:11:48,240 –> 00:11:50,800
پس بیایید امتحان کنیم. اکنون به داخل
356
00:11:50,800 –> 00:11:52,320
خدمه فرش نگاهی بیندازید که اولین جعبه
357
00:11:52,320 –> 00:11:54,560
طراحی ساده است، تیک خورده
358
00:11:54,560 –> 00:11:56,399
است کادر دوم این است که درک آن آسان است
359
00:11:56,399 –> 00:11:58,000
آیا به وضوح
360
00:11:58,000 –> 00:11:59,760
هدف خود را به خوبی بیان می کند من از مردم پرسیده ام و
361
00:11:59,760 –> 00:12:01,120
آنها می گویند بله می توانند بفهمند اینجا چه خبر
362
00:12:01,120 –> 00:12:02,240
است،
363
00:12:02,240 –> 00:12:04,399
ما محاسبه می کنیم مساحت اتاق
364
00:12:04,399 –> 00:12:06,240
را در صورت نیاز گرد می
365
00:12:06,240 –> 00:12:08,320
کنیم و سپس مساحت
366
00:12:08,320 –> 00:12:11,120
اتاق را در قیمت هر متر مربع
367
00:12:11,120 –> 00:12:12,720
آن مساحت ضرب می کنیم، چه جمع
368
00:12:12,720 –> 00:12:13,920
شده باشد یا نه، بنابراین همه چیز کاملاً
369
00:12:13,920 –> 00:12:15,279
ساده است،
370
00:12:15,279 –> 00:12:16,959
بنابراین مربع دوم را علامت می زنیم. کد
371
00:12:16,959 –> 00:12:18,800
به وضوح co هدف خود را اعلام می کند
372
00:12:18,800 –> 00:12:20,639
من واقعاً نمی توانم هیچ تکراری را در اینجا ببینم،
373
00:12:20,639 –> 00:12:22,079
در تست های ما کمی تکرار وجود دارد،
374
00:12:22,079 –> 00:12:23,440
اما
375
00:12:23,440 –> 00:12:25,200
اگر به ویدیویی که من در تکراری ضبط کرده ام
376
00:12:25,200 –> 00:12:27,120
و قانون
377
00:12:27,120 –> 00:12:28,399
سه برگردید، فقط دو نمونه از
378
00:12:28,399 –> 00:12:30,000
تکراری در اینجا وجود دارد، بنابراین من. من خیلی
379
00:12:30,000 –> 00:12:31,360
نگران این نیستم که برای خوانایی آن را بگذارم
380
00:12:31,360 –> 00:12:33,680
381
00:12:33,680 –> 00:12:35,600
و در نهایت آیا این واقعا سادهترین
382
00:12:35,600 –> 00:12:36,959
کاری است که میتوانستم به خوبی انجام دهم،
383
00:12:36,959 –> 00:12:39,120
384
00:12:39,120 –> 00:12:41,200
فکر میکنم میتوانستم عملکرد خالص آن را بسازم اما واقعاً فکر میکنم صادقانه بگویم
385
00:12:41,200 –> 00:12:43,120
این یک کلاس است یک روش در
386
00:12:43,120 –> 00:12:44,639
سازنده،
387
00:12:44,639 –> 00:12:46,240
من از این راضی هستم، فکر می کنم بسیار
388
00:12:46,240 –> 00:12:47,760
ساده است،
389
00:12:47,760 –> 00:12:49,600
من برای ساده تر کردن آن
390
00:12:49,600 –> 00:12:51,519
391
00:12:51,519 –> 00:12:53,519
مشکل دارم، بنابراین ما همه جعبه های
392
00:12:53,519 –> 00:12:55,200
طراحی ساده را انتخاب می کنیم، اما مشکلی وجود دارد که
393
00:12:55,200 –> 00:12:58,639
مشتری ما به ما اطلاع داده است که
394
00:12:58,639 –> 00:13:01,360
گاهی اوقات مساحت یک اتاق
395
00:13:01,360 –> 00:13:03,279
طول ضربدر عرض نیست
396
00:13:03,279 –> 00:13:05,600
گاهی اوقات اتاق مستطیل نیست
397
00:13:05,600 –> 00:13:07,440
گاهی اوقات اتاق مثلاً باور
398
00:13:07,440 –> 00:13:09,519
کنید یا نه می تواند دایره ای باشد
399
00:13:09,519 –> 00:13:12,240
یا می تواند L شکل باشد بنابراین می گویند ما
400
00:13:12,240 –> 00:13:14,160
نیاز به توانایی داریم
401
00:13:14,160 –> 00:13:16,720
اشکال مختلف اتاق، بنابراین آنچه ما در اینجا می گوییم این
402
00:13:16,720 –> 00:13:18,720
است که می توانیم تصور کنیم
403
00:13:18,720 –> 00:13:21,440
که بخواهیم این کد را در اینجا تغییر دهیم اما نمی
404
00:13:21,440 –> 00:13:23,279
خواهیم بقیه آن را تغییر دهیم و
405
00:13:23,279 –> 00:13:24,480
406
00:13:24,480 –> 00:13:25,920
این یک قاعده کلی است در اینجا وقتی به یک
407
00:13:25,920 –> 00:13:28,320
ماژول نگاه می کنم من هستم. من بر اساس
408
00:13:28,320 –> 00:13:30,639
درک خود از الزامات فکر
409
00:13:30,639 –> 00:13:33,279
می کنم که آیا باید این را تغییر دهیم، آیا
410
00:13:33,279 –> 00:13:35,680
می بینم که باید این را تغییر دهیم یا
411
00:13:35,680 –> 00:13:37,519
در زمان اجرا
412
00:13:37,519 –> 00:13:39,120
بدون تغییر آن تغییر دهیم و پاسخ
413
00:13:39,120 –> 00:13:40,880
اینجا این است که بله ما به
414
00:13:40,880 –> 00:13:43,760
صراحت از آن مطلع شده ایم.
415
00:13:43,760 –> 00:13:45,920
بنابراین آنچه که اکنون باید انجام دهیم این است که باید
416
00:13:45,920 –> 00:13:48,079
این ماژول را اساساً تقسیم کنیم تا
417
00:13:48,079 –> 00:13:50,000
418
00:13:50,000 –> 00:13:53,279
هر ماژول فقط یک کار خاص را
419
00:13:53,279 –> 00:13:55,680
انجام دهد، یکی برای محاسبه مساحت
420
00:13:55,680 –> 00:13:57,360
اتاق به هر حال انجام شده است
421
00:13:57,360 –> 00:14:00,160
و دیگری برای محاسبه
422
00:14:00,160 –> 00:14:01,440
قیمت فرش نصب شده
423
00:14:01,440 –> 00:14:05,839
در آن اتاق و ما می خواهیم که آن ماژول ها
424
00:14:05,839 –> 00:14:07,839
عملکرد داخلی خود را پنهان کنند، به
425
00:14:07,839 –> 00:14:09,600
عنوان مثال اگر بخواهیم مساحت
426
00:14:09,600 –> 00:14:11,120
از دست رفته طول و عرض را محاسبه کنیم
427
00:14:11,120 –> 00:14:13,120
یا مثلاً از شعاع یک
428
00:14:13,120 –> 00:14:14,720
اتاق دایره ای دایره ای استفاده کنیم،
429
00:14:14,720 –> 00:14:16,399
آن اطلاعات و نحوه
430
00:14:16,399 –> 00:14:18,000
محاسبه انجام می شود. باید
431
00:14:18,000 –> 00:14:19,440
درون هر ماژولی
432
00:14:19,440 –> 00:14:22,240
که آن کار را انجام می دهد پنهان شود، بنابراین باید به
433
00:14:22,240 –> 00:14:23,760
کپسولاسیون
434
00:14:23,760 –> 00:14:25,760
برسیم و سپس باید آن را طوری بسازیم که
435
00:14:25,760 –> 00:14:28,160
بتوانیم یک اتاق مستطیلی را با یک
436
00:14:28,160 –> 00:14:30,160
اتاق دایره ای یا یک اتاق دایره ای را با یک
437
00:14:30,160 –> 00:14:32,720
اتاق مثلثی عوض
438
00:14:32,720 –> 00:14:35,600
کنیم. برای بازنویسی
439
00:14:35,600 –> 00:14:36,480
440
00:14:36,480 –> 00:14:38,800
هرکدام از این کدها،
441
00:14:38,800 –> 00:14:40,720
442
00:14:40,720 –> 00:14:44,000
حالا که این کار را انجام دادهام، به سرعت تستهایم را مجدداً اجرا میکنم، اوه، اوه، اوه اوم، پس
443
00:14:44,000 –> 00:14:45,120
سعی میکنیم تمام
444
00:14:45,120 –> 00:14:46,639
کادرهای طراحی مدولار را علامت بزنیم، بنابراین میرویم
445
00:14:46,639 –> 00:14:48,000
برای بازسازی این کد
446
00:14:48,000 –> 00:14:49,680
به طوری که ما ماژولهایی داریم که هر کدام
447
00:14:49,680 –> 00:14:51,920
یک کار را انجام میدهند، ماژولهایی داریم که
448
00:14:51,920 –> 00:14:53,519
عملکرد داخلی خود را پنهان میکنند، به ویژه
449
00:14:53,519 –> 00:14:55,279
دادههای خود را در معرض نمایش نمیگذارند، آنها
450
00:14:55,279 –> 00:14:56,800
کلمهای را که ما به دنبال آن هستیم کپسوله میکنند
451
00:14:56,800 –> 00:14:58,240
452
00:14:58,240 –> 00:15:00,399
و در نهایت میخواهیم برای
453
00:15:00,399 –> 00:15:02,399
اینکه وابستگیها قابل تعویض
454
00:15:02,399 –> 00:15:04,480
باشند، بنابراین اگر یک ماژول از ماژول دیگری استفاده میکند، از
455
00:15:04,480 –> 00:15:06,240
456
00:15:06,240 –> 00:15:08,000
پیادهسازی ماژولی که استفاده میکند اطلاعی ندارد،
457
00:15:08,000 –> 00:15:12,320
بنابراین بیایید ابتدا این refactor را انجام
458
00:15:12,320 –> 00:15:14,959
دهیم، ما به چند شی جدید در اینجا نیاز خواهیم داشت.
459
00:15:14,959 –> 00:15:16,720
کلاس ها
460
00:15:16,720 –> 00:15:19,279
و آسان راه برای انجام این کار در جاوا یا
461
00:15:19,279 –> 00:15:21,040
سی شارپ استفاده از یک refactoring
462
00:15:21,040 –> 00:15:22,800
به نام شی پارامتر معرفی است، من
463
00:15:22,800 –> 00:15:23,920
فکر می کنم در ja
464
00:15:23,920 –> 00:15:25,519
در rider برای سی شارپ به آن
465
00:15:25,519 –> 00:15:27,600
پارامترهای تبدیل می گویند که
466
00:15:27,600 –> 00:15:29,600
این کار پارامترهای یک متد یا
467
00:15:29,600 –> 00:15:30,720
سازنده را می گیرد
468
00:15:30,720 –> 00:15:32,800
و آن را تبدیل می کند. یک شی با فیلدها
469
00:15:32,800 –> 00:15:34,480
و آن فیلدها در سازنده شی تنظیم می شوند
470
00:15:34,480 –> 00:15:35,920
و سپس آن
471
00:15:35,920 –> 00:15:38,160
شی به عنوان پارامتر ارسال
472
00:15:38,160 –> 00:15:41,519
473
00:15:41,519 –> 00:15:43,279
474
00:15:43,279 –> 00:15:44,480
475
00:15:44,480 –> 00:15:46,880
می شود. در مراحل
476
00:15:46,880 –> 00:15:49,279
مرحله شماره یک این است که کلاسی را
477
00:15:49,279 –> 00:15:50,240
که میخواهیم
478
00:15:50,240 –> 00:15:52,320
ایجاد کنیم به عنوان این پارامتر تصور کنیم، بنابراین این
479
00:15:52,320 –> 00:15:53,440
یک اتاق خواهد بود و
480
00:15:53,440 –> 00:15:54,079
اساساً طول
481
00:15:54,079 –> 00:15:57,199
و عرض خواهد داشت، بنابراین بیایید فقط
482
00:15:57,199 –> 00:15:59,040
مرحله شماره یک را تصور کنیم، بیایید تصور
483
00:15:59,040 –> 00:16:01,440
کنیم چیزی به عنوان یک اتاق
484
00:16:01,440 –> 00:16:04,560
و کاری که میخواهم انجام دهم این
485
00:16:05,279 –> 00:16:07,120
است که میخواهم اتاق بهعنوان پارامتری از این مورد به آن منتقل شود،
486
00:16:07,120 –> 00:16:10,079
اکنون میتوانم
487
00:16:10,079 –> 00:16:14,480
از یک um
488
00:16:15,040 –> 00:16:16,880
خودکار و یک refactoring خودکار استفاده کنم فقط برای اینکه
489
00:16:16,880 –> 00:16:18,399
کارها کمی آسانتر شود، بنابراین بیایید یک
490
00:16:18,399 –> 00:16:21,440
پارامتر برای اتاق اجازه اضافه کنیم. آن را اتاق بنامیم
491
00:16:21,440 –> 00:16:22,959
و کاری که میخواهیم انجام دهیم این است که میگوییم
492
00:16:22,959 –> 00:16:24,480
یک نمونه ناشناس از
493
00:16:24,480 –> 00:16:26,000
آن بسازید و آن را
494
00:16:26,000 –> 00:16:28,959
از کد آزمایشی ارسال کنید تا پوچ نباشد،
495
00:16:28,959 –> 00:16:30,160
مشکلی نیست،
496
00:16:30,160 –> 00:16:32,480
حالا میخواهم این کار را انجام دهم.
497
00:16:32,480 –> 00:16:34,560
قلب
498
00:16:34,560 –> 00:16:36,720
در اینجا به ویدیویی که در مورد تغییر کد قدیمی ضبط خواهم کرد، کمی پیش بینی می کند
499
00:16:36,720 –> 00:16:38,320
500
00:16:38,320 –> 00:16:40,880
و افرادی هستند
501
00:16:40,880 –> 00:16:41,920
که به شما می گویند که اگر
502
00:16:41,920 –> 00:16:43,680
کد قدیمی را تغییر می دهید اما از
503
00:16:43,680 –> 00:16:46,800
بازسازی خودکار استفاده می کنید،
504
00:16:46,800 –> 00:16:48,720
نیازی به آزمایش مجدد ندارید کد
505
00:16:48,720 –> 00:16:50,000
چون بازسازيهاي خودکار
506
00:16:50,000 –> 00:16:51,839
تضمين ميشود که به خوبي آن را خراب نميکنند،
507
00:16:51,839 –> 00:16:53,839
اجازه دهيد نشان دهم چه اتفاقي ميافتد وقتي به
508
00:16:53,839 –> 00:16:55,360
دنبال آن
509
00:16:55,360 –> 00:16:58,160
روغن مار ميافتيد، خوب، پس بياييد اين بازسازي خودکار را انجام دهيم
510
00:16:58,160 –> 00:16:59,759
511
00:16:59,759 –> 00:17:01,839
و ابزار به طور خودکار چه کاري را ا