شرط بندی فوتبال : Bliki: RefinementCodeReview


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

وقتی افراد به مرور کد فکر می کنند ، معمولاً به یک گام صریح در روند کار تیم توسعه فکر می کنند. این روزها بررسی قبل از ادغام، انجام شده در a درخواست را بکشید رایج ترین مکانیسم برای بازبینی کد است ، تا جایی که بسیاری از افراد بدون احساس فکر می کنند که استفاده نکردن از درخواست های pull ، همه فرصت ها را برای انجام بررسی کد از بین می برد. چنین دید محدودی در مورد بازبینی کد ، نه تنها مجموعه ای از سازوکارهای صحیح را برای بررسی نادیده می گیرد ، بلکه مهمتر از همه احتمالاً قدرتمندترین تکنیک بررسی کد – یعنی اصلاح پایدار توسط کل تیم – را نادیده می گیرد.

یکی از چشم اندازهای فراگیر در نرم افزار این تصور است که چیزی است که ما آن را می سازیم و کامل می کنیم – از این رو استعاره بی پایان ساخت و معماری ساختمان است. با این حال ویژگی اصلی نرم افزار این است که این نرم افزار است
نرم، و می تواند پس از انتشار به راحتی اصلاح شود همانطور که در ابتدا در ویرایشگر برنامه نویس ساخته شد. به همین دلیل اریک دورنبورگ عاقلانه استدلال می کند که معماری استعاره ضعیفی است و بهتر خواهد بود
با برنامه ریزی شهری جایگزین شد. نرم افزارهای ارزشمند معمولاً در یک تغییر دائمی تغییر می کنند ، زیرا ما از درک بهتری از ارزشی که می تواند داشته باشد ، ویژگی هایی را به آن اضافه می کنیم. اما این فرصت فقط افزودن ویژگی های جدید نیست ، بلکه اصلاح این نرم افزار است – با دروس تیمی که بطور پیوسته در مورد چگونگی بهترین نرم افزار برای ایجاد این تغییرات می آموزد.

با داشتن یک محیط مناسب ، می توانم کمی کدها را که شش ماه پیش نوشته شده جستجو کنم ، برخی از مشکلات مربوط به نحوه نوشتن را ببینم و سریع آنها را برطرف کنم. این ممکن است به این دلیل باشد که این کد هنگام نوشتن دارای نقص بوده است یا از آنجا که تغییراتی در کد کد ایجاد شده است ، منجر به عدم صحیح کد دیگر شده است. علت آن که باشد ، مهم این است که مشکلات را به محض اینکه مانع ما شوند ، برطرف کنیم. به محض اینکه من درکی از کدی داشته باشم که بلافاصله از خواندن آن مشخص نشده است ، من مسئولیت دارم (همانطور که Ward Cunningham با کمال تعجب گفت) این درک را از ذهنم بیرون بریزم و آن را در کد بگذارم. به این ترتیب خواننده بعدی مجبور نیست خیلی سخت کار کند.

این فرآیند تصفیه دقیقاً همان چیزی است که در بازبینی کد اتفاق می افتد ، اما هر بار که کد به آن نگاه می شود بیشتر از زمانی که کد به پایگاه کد اضافه می شود ، شروع می شود. این برای من یک بینش اساسی بود. به هر حال ، بسیاری از مشکلاتی که بررسی کد به دنبال رفع آن است ، مشکلاتی است که فقط با خواندن کد در آینده به مشکل تبدیل می شود. بحث نگران کننده ای در مورد آنها وجود دارد تا آن زمان. از این گذشته ، درست مانند افزودن مجموعه آپارتمان های بزرگ ، الگوی ترافیک را تغییر می دهد ، ممکن است شش ماه بعد متن کد را تغییر داده باشیم ، نوع اصلاح کد مورد نیاز را تغییر دهیم. این همچنین افراد بیشتری را درگیر می کند ، در این طرح هر سازنده ای که کد را می خواند یک بازبینی کننده است و یکی از آنها که می تواند بر اساس استفاده واقعی آنها از کد بررسی شود تا برخی از دستورالعمل های کلی ، اما اغلب با توجیه خطرناک.

یک روش برای فکر کردن در مورد اعتبار یک عمل این است که فکر کنید چه اتفاقی می افتد اگر انحصار باشد. اگر تنها مکانیزم بررسی کد ما تکرار برنامه نویسان بعدی باشد ، چه می شود؟ یک نتیجه این است که توجه مرور بر روی مناطقی از کد که بیشتر خوانده می شوند متمرکز می شود – که بیشتر مناطقی است که باید مورد توجه قرار گیرد. یک نگرانی این است که کدی که هرگز خوانده نمی شود هرگز بررسی نمی شود – اما بیشتر اوقات خوب است. یک تیم با روش های تست خوب می تواند از کارکرد کد اطمینان داشته باشد ، تست های عملکرد می توانند مسائل مربوط به عملکرد را شناسایی کنند. با توجه به اینکه ، اگر کد هرگز نیازی به بررسی مجدد کد ندارد ، نیازی به صرف تلاش برای فهم آن نداریم. من انتظار دارم که چنین مواردی به ندرت نادر باشند ، اما این یک آزمایش فکری آموزنده است.

اما بیشتر … همه. یک استثنا obvious آشکار در اینجا مسائل امنیتی است. کد می تواند برای سالها خوب کار کند تا زمانی که یک مهاجم سو finds استفاده را پیدا کند ، در آن زمان ما از عدم بررسی آن ابراز تاسف می کنیم. این نمونه ای از نگرانی های ایمنی با تأثیر بالا اما نادر است که شایسته بررسی دقیق است. اما این بدان معنا نیست که ما نباید از پالایش به عنوان مکانیزم بررسی کد استفاده آگاهانه کنیم. در عوض ، این بدان معناست که ما باید از نگرانی های نادر با تأثیر زیاد آگاه باشیم و جریان کار خود را تنظیم کنیم تا به دنبال آن نوع مشکل خاص باشیم ، به میزان مورد نیاز در شرایط خود ، تنظیم کنیم. تجزیه و تحلیل تهدید باید ماژول هایی را که نیاز به توجه بیشتر دارند و انواع خطرات آنها را تهدید می کند. بررسی کد هدفمند ممکن است برای نگرانی های امنیتی برنامه ریزی شود ، این موارد می توانند به طور م moreثرتری اجرا شوند زیرا روی نوع خاصی از مشکلات متمرکز هستند.

برای انجام این اصلاح کد همیشگی ، ما به روش های دیگری نیاز داریم. اگر می خواهم کد را تغییر دهم ، باید اطمینان داشته باشم که عملکرد موجود را شکسته نخواهد کرد ، بنابراین من به چیزی شبیه به این نیاز دارم کد خودآزمایی. من باید بدانم که این امر باعث درگیری بزرگ ادغام برای دیگران نخواهد شد ، بنابراین من نیاز دارم ادغام مداوم. همه ما باید مهارت داشته باشیم بازسازی بنابراین می توانیم کد را به طور موثر تغییر دهیم. از آنجا که این امر متکی به بسیاری از توسعه دهندگان است که انتظار می رود هر بخشی از پایگاه کد را اصلاح کنند ، بهترین کار ما این است مالکیت کد جمعی (یا حداقل ضعیف). اما با توجه به تیمی که این مهارت ها را دارد ، آنها می توانند به استفاده از اصلاح منظم خود به عنوان بخشی اساسی از استراتژی بازبینی كد خود اعتماد كنند.

اگر هیچ چیز دیگری نیست ، من فکر می کنم مهم است که ما بیشتر به عنوان بازبینی کد ، در نقش اصلاح کار کنیم. یکی از خطرات تمرکز فقط بر بررسیهای قبل از یکپارچه سازی این است که می تواند تیمها را به غفلت از نحوه کار تغییر در پایگاه کد سوق دهد. اگر من یک خط اصلی بکر داشته باشم ، و اطمینان حاصل کنم که هر تعهدی در آن خط اصلی بکر است – آیا می توانم مطمئن باشم که کد کد پس از شش ماه همچنان بکر است؟ من استدلال می کنم که نمی توانم ، زیرا این تغییرات به این معنی است که تصمیم خوب درباره برخی از کدها شش ماه پیش اکنون تصمیم خوبی نیست. تصفیه کد به ما امکان می دهد کد قدیمی را در برابر این تغییر کاربرد ارزیابی کنیم و به ما امکان می دهیم سلامت آن را حفظ کنیم.

سپاسگزاریها

بن نوبل ، کریس فورد ، ایوان بوتچر ، ایان کارترایت ، جرمی هویسکامپ ، کن موگراژ ، ماریو جیامپیتری ، مارتا روته ، عمر بشیر ، پیتر گیلارد-ماس و سیمون برونینگ در مورد پیش نویس های این پست در لیست پستی داخلی ما اظهار نظر کردند.


سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *