处理编程中的开放问题的最有效方法

时间:2010-02-28 19:53:11

标签: language-agnostic programming-languages

我用C ++编程。有时有1000种方法可以做某些事情,并且根据当下的灵感/能量等,我可以选择“正确的”或者不使用,并花10分钟或3天时间来解决问题或找到解决方案或做老板的任务。

当你编程时,你如何应对这种“开放”的情况?用你的直觉?之前喜欢计划好吗?

非常感谢

7 个答案:

答案 0 :(得分:6)

  1. 从所有可能的解决方案中选择一个易于测试的解决方案。
  2. 实施测试
  3. 实施代码。
  4. 重复直到我具备实际解决问题所需的功能。

    现在检查代码是否足够干净。大多数时候它不会。在这种情况下,重构直到它干净。

    足够清洁意味着:要么比项目中的平均代码要干净得多,要么干净,因为我能够写出来。无论之前达成什么。

    好的我必须承认,这至少是我尝试编写代码的方式。

    选择可测试性作为副作用的解决方案更喜欢精心设计的解决方案。

答案 1 :(得分:2)

尽量减少未完成的工作量。

对于一个开放的问题,我只生成一个反映我当前已知信息的最小代码。

这并不意味着我会生成低质量的代码。如果我不关心代码的质量,那么我将使我的生活变得不必要,以便将来发生变化,这将是一个开放的问题。如果新信息正在下降,我尝试将它们合并到现有代码中。此外,设计/架构将与当前已知的信息保持一致。

答案 2 :(得分:1)

我会:

  1. 编写单元测试,检查问题的预期解决方案
  2. 实现第一个想到的算法
  3. 重构并重复
  4. 这对于您第一次攻击的问题尤为有效。如果你担心你的老板会在第2点之后说“停止”,那么在与他/她交谈之前,只需做几次迭代......

答案 3 :(得分:1)

让它运行;改正它;简单。

或详细说明:

  1. 构建可能与解决方案相关的最简单的事情。
  2. 优化它以满足要求。设计和积累单元测试;当所有测试都运行时,您的项目就完成了。
  3. 不,等等!直到代码如此简单以至于显然没有错误时才会这样做。如果代码太复杂而没有明显的错误,那么你就不会对你的手艺忠诚。

答案 4 :(得分:0)

我通常会尝试找到适用于特定问题的众所周知的模式。如果我找不到一个或一个足够接近我的解决方案,那么我就会做我认为最好的事情并完整地记录我正在做的事情。

然后,六个月后,我重构它以应用其他人在类似情况下使用的更好的模式。

然后,十二个月后,我重构了整个该死的东西,并用五行代码替换它。

答案 5 :(得分:0)

可测试性是件好事。

我非常关注的另一件事是可读性。 我通常会支持该代码,因此最好采用最短,最干净的方式,包括最少的非任务相关实体。

本着DDD的精神,这意味着你的任务的几乎自然语言描述被翻译成编程语言。

答案 6 :(得分:0)

嗯,我不想以纯文本形式回答,而是.Net Code-Segment;)
我认为C ++ Dev很容易理解以下内容:

SolutionRefining()
{
    result= Requirements.Brianstorming(Current_Experience_Knowledge);
    if(!result.Equals("Its Time To Design and Code"))//Assuming analysis is already done!
    {
        do
        {
            this.TakeRest_Break_HaveFun();//Multi-Processes OS ;)
            result = QuickResearchSession(searchEngine Google, softwareCommunity StackOverflow, inHouseGuru Anonymous);
        }
        while(!result.Equals("Its Time To Design and Code"));
    }
    else
    {
        while(Testing().MajorBugs >= 1 && !Coding().Finished)
            Develop().Review_UnitTesting().Commit();//artificial .NET! Don't try it in VS 2010.

        SubmitProject().GetMoney().GetLaid();
        WakeUp().GoToWork().BeReadyForNewFeaturesAttack();
    }


    MeanWhile (!Solution.Equals("Standard & Best Practice")) //MeanWhile can be found in .NET Framework 11.7301 Beta RC.45

    {
                    //this method shall always invoked during the developer journey in the Software Life Cycle.
        Study("Design Patterns").Understand().UnderstandMore().Apply();
        UpdateTheToolKit();
        SearchFor("Standard & Best Practice").Consume();
    }

    finally("Write your own A-Z framework").GetRetired();
}
相关问题