最近玩Reporting Service报表,微软官方客户端展现实现中有这么一段代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | protected void Page_Load( object sender, EventArgs e) { if (!IsPostBack) { // Get report path from configuration file Uri serverurl = new Uri(ConfigurationManager.AppSettings[ "ReportServerUrl" ]); string reportsfolder = ConfigurationManager.AppSettings[ "SampleReportsPath" ]; // folder or site path string fileextension = (ConfigurationManager.AppSettings[ "ReportServerMode" ] == "SharePoint" ? ".rdl" : String.Empty); // extension, depending on the report server mode ReportViewer1.ServerReport.ReportServerUrl = serverurl; ReportViewer1.ServerReport.ReportPath = String.Format( "{0}/Company Sales 2008{1}" , reportsfolder, fileextension); ReportViewer2.ServerReport.ReportServerUrl = serverurl; ReportViewer2.ServerReport.ReportPath = String.Format( "{0}/Employee Sales Summary 2008{1}" , reportsfolder, fileextension); ReportViewer3.ServerReport.ReportServerUrl = serverurl; ReportViewer3.ServerReport.ReportPath = String.Format( "{0}/Product Catalog 2008{1}" , reportsfolder, fileextension); ReportViewer4.ServerReport.ReportServerUrl = serverurl; ReportViewer4.ServerReport.ReportPath = String.Format( "{0}/Sales Trend 2008{1}" , reportsfolder, fileextension); ReportViewer5.ServerReport.ReportServerUrl = serverurl; ReportViewer5.ServerReport.ReportPath = String.Format( "{0}/Territory Sales Drilldown 2008{1}" , reportsfolder, fileextension); } } |
忍不住手痒一下,把它变成:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | protected void Page_Load( object sender, EventArgs e) { if (IsPostBack) return ; // Get report path from configuration file Uri serverurl = new Uri(ConfigurationManager.AppSettings[ "ReportServerUrl" ]); string reportsfolder = ConfigurationManager.AppSettings[ "SampleReportsPath" ]; // folder or site path. extension, depending on the report server mode string fileextension = (ConfigurationManager.AppSettings[ "ReportServerMode" ] == "SharePoint" ? ".rdl" : String.Empty); Action<Microsoft.Reporting.WebForms.ReportViewer, string > setReportViewer = (report, reportName) => { report.ServerReport.ReportServerUrl = serverurl; report.ServerReport.ReportPath = String.Format( "{0}/{2}{1}" , reportsfolder, fileextension, reportName); }; setReportViewer(ReportViewer1, "Company Sales 2008" ); setReportViewer(ReportViewer2, "Employee Sales Summary 2008" ); setReportViewer(ReportViewer3, "Product Catalog 2008" ); setReportViewer(ReportViewer4, "Sales Trend 2008" ); setReportViewer(ReportViewer5, "Territory Sales Drilldown 2008" ); } |
这个变化有三点:
1、把IsPostBack条件判断反转,减少一层嵌套。
2、把设置ReportViewer的相同逻辑提取出来,在一个委托中设置。
3、让注释与上行代码隔一行,并单独占一行。
应该再简单没有了吧,但是,你会吗?Sorry,你一定会,但即使你会,微软都不会去做,你会去做吗?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?