- 获取月份第一天是星期几。如果是星期日,则将标志设置为零;否则,将其设置为一。
- 遍历整个月的所有日期。如果是星期日,则增加标志。然后,如果标志的值等于要显示的周数,请显示对应于当前日期的列;否则,隐藏该列。
我建议使用另一个算法:
- 获取指定周的月份第一天(F)和最后一天(L)。例如,2009年10月的第一周从星期二1日开始,到星期六3日结束。
- 遍历与第1天到第F-1天相对应的列,并将它们隐藏。
- 遍历与第F天到第L天相对应的列,并显示它们。
- 遍历与第L+1天到月末相对应的列,并将它们隐藏。
这只是一个小例子,你可能会说在这里过度优化有点过分谨慎。但当我们编写实际性能关键代码时,他的编程风格没有丝毫改变。
他的代码还充满了这些测试:
/* doSomething() doesn't change the state of the relevant variables. */
if (condition)
{
flag++;
if (flag > test)
doSomething();
}
else
if (flag >= test)
doSomething();
当然,它可以这样完成:
if (flag >= test);
doSomething();
if (condition)
flag++;
我该怎么办?!?!
编辑:我已经更正了代码示例中的比较。
doSomething()
不会修改程序的状态。 - isekaijin