首页 / C# / 如何重构此C#代码以使其更易于阅读?
如何重构此C#代码以使其更易于阅读?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何重构此C#代码以使其更易于阅读?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5532字,纯文字阅读大概需要8分钟。
内容图文
![如何重构此C#代码以使其更易于阅读?](/upload/InfoBanner/zyjiaocheng/675/c8b7d24570e34a25b90b1f94e117d01f.jpg)
这是我的Controller中的一个动作-在我的整个项目中,我的Controller中都有类似的大型方法.
我正在尝试学习将这些东西放在哪里以及如何清理它们.我是新手,如果我看到了一个很好的示例来更改自己的代码,那么它很可能会教我如何对大量代码进行更改.
这是我的动作:
public ActionResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.TitleSortParm = String.IsNullOrEmpty(sortOrder) ? "Title desc" : "";
ViewBag.CreditsSortParm = sortOrder == "Credits" ? "Credits desc" : "Credits";
ViewBag.ElectiveSortParm = sortOrder == "Elective" ? "Elective desc" : "Elective";
ViewBag.InstructorSortParm = sortOrder == "Instructor" ? "Instructor desc" : "Instructor";
ViewBag.YearSortParm = sortOrder == "Year" ? "Year desc" : "Year";
ViewBag.AttendingDaysSortParm = sortOrder == "AttendingDays" ? "AttendingDays desc" : "AttendingDays";
ViewBag.AttendanceCapSortParm = sortOrder == "AttendanceCap" ? "AttendanceCap desc" : "AttendanceCap";
ViewBag.StartDateSortParm = sortOrder == "StartDate" ? "StartDate desc" : "StartDate";
ViewBag.LocationSortParm = sortOrder == "Location" ? "Location desc" : "Location";
ViewBag.ParishSortParm = sortOrder == "Parish" ? "Parish desc" : "Parish";
ViewBag.DescriptionSortParm = sortOrder == "Description" ? "Description desc" : "Description";
ViewBag.ApprovedSortPArm = sortOrder == "Approved" ? "Approved desc" : "Approved";
ViewBag.CompletedSortPArm = sortOrder == "Completed" ? "Completed desc" : "Completed";
ViewBag.ArchivedSortPArm = sortOrder == "Archived" ? "Archived desc" : "Archived";
if (Request.HttpMethod == "GET")
{
searchString = currentFilter;
}
else
{
page = 1;
}
ViewBag.CurrentFilter = searchString;
var courses = from s in db.Courses
select s;
if (!String.IsNullOrEmpty(searchString))
{
courses = courses.Where(s => s.Title.ToUpper().Contains(searchString.ToUpper()));
}
switch (sortOrder)
{
case "Title desc":
courses = courses.OrderByDescending(s => s.Title);
break;
case "Credits":
courses = courses.OrderBy(s => s.Credits);
break;
case "Credits desc":
courses = courses.OrderByDescending(s => s.Credits);
break;
case "Elective":
courses = courses.OrderBy(s => s.Credits);
break;
case "Elective desc":
courses = courses.OrderByDescending(s => s.Credits);
break;
case "Instructor":
courses = courses.OrderBy(s => s.Instructor.LastName);
break;
case "Instructor desc":
courses = courses.OrderByDescending(s => s.Instructor.LastName);
break;
case "Year":
courses = courses.OrderBy(s => s.Year);
break;
case "Year desc":
courses = courses.OrderByDescending(s => s.Year);
break;
case "AttendingDays":
courses = courses.OrderBy(s => s.AttendingDays);
break;
case "AttendingDays desc":
courses = courses.OrderByDescending(s => s.AttendingDays);
break;
case "AttendanceCap":
courses = courses.OrderBy(s => s.AttendanceCap);
break;
case "AttendanceCap desc":
courses = courses.OrderByDescending(s => s.AttendanceCap);
break;
case "StartDate":
courses = courses.OrderBy(s => s.StartDate);
break;
case "StartDate desc":
courses = courses.OrderByDescending(s => s.StartDate);
break;
case "Location":
courses = courses.OrderBy(s => s.Location);
break;
case "Location desc":
courses = courses.OrderByDescending(s => s.Location);
break;
case "Parish":
courses = courses.OrderBy(s => s.Parish);
break;
case "Parish desc":
courses = courses.OrderByDescending(s => s.Parish);
break;
case "Description":
courses = courses.OrderBy(s => s.Description);
break;
case "Description desc":
courses = courses.OrderByDescending(s => s.Description);
break;
case "Approved":
courses = courses.OrderBy(s => s.Approved);
break;
case "Approved desc":
courses = courses.OrderByDescending(s => s.Approved);
break;
case "Completed":
courses = courses.OrderBy(s => s.Completed);
break;
case "Completed desc":
courses = courses.OrderByDescending(s => s.Completed);
break;
case "Archived":
courses = courses.OrderBy(s => s.Archived);
break;
case "Archived desc":
courses = courses.OrderByDescending(s => s.Archived);
break;
default:
courses = courses.OrderBy(s => s.Title);
break;
}
int pageSize = 4;
int pageNumber = (page ?? 1);
return View(courses.ToPagedList(pageNumber, pageSize));
}
我应该对上面的代码做什么以使其更具可读性?我是否只是将其中的一部分作为单独的方法移出并移至Controller的底部?我是否将方法放在另一个文件中的某个位置,并在此处引用?
请记住,我正在学习并且很清楚.
解决方法:
更改代码的方式将纯粹是主观的,这是一个创造性的过程,您需要经历并奋斗才能成为更好的开发人员.
但是作为一个伪代码示例,目的是使您的方法更小.不,真的,甚至更小!
使函数名称非常有意义,并确保它们告诉程序员方法的真正含义是什么.这只是结构的一个示例:
public class Something {
public ActionResult Index() {
MakeCallToFunction();
var something = GetSomething();
var somethingElse = GetSomethingElse(something);
var model = new SomeViewModel(somethingElse);
return View(model);
}
private void MakeCallToFunction () {
...
}
private string GetSomething() {
...
return someVal;
}
private SomeObject GetSomethingElse(string something) {
...
return someBigObject;
}
}
或者这可能意味着您要利用所有这些小功能并上一堂课
public class Something {
public ActionResult Index(int id) {
var model = new SomeRelatedStuff.Load(id);
return View(model);
}
}
private class SomeRelatedStuff {
public SomeRelatedStuff()
public static SomeRelatedStuff Load(int id) {
var something = GetSomething();
var somethingElse = GetSomethingElse(something);
var model = new SomeViewModel(somethingElse);
MakeObject();
return this;
}
private string GetSomething() {
...
return someVal;
}
private SomeObject GetSomethingElse(string something) {
...
return someBigObject;
}
private void MakeObject () {
...
}
}
另外请请罗伯特·马丁(罗伯特·马丁)(鲍勃叔叔)获得清洁代码,至少在本周末阅读前四章.然后再次阅读它们.
内容总结
以上是互联网集市为您收集整理的如何重构此C#代码以使其更易于阅读?全部内容,希望文章能够帮你解决如何重构此C#代码以使其更易于阅读?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。