关于前两天的一个比较复杂的程序逻辑的思考

之前,接了个项目,里边有一个功能的逻辑比较复杂,其中涉及好几十个表之间的相互联系,直接把我搞得头异常大,后来,跟我们的一位大神级全能程序员交流之后,发现其实这个功能不难,只是我的思维有点问题。(由于思路涉及其他公司机密,故本文中不再讨论那个功能)

例如:小明接到一个出差的任务,需要去北京三天。

我最初的思路:小明应该去整理行李,那好,都需要哪些东西呢?换洗衣服、钱包、身份证。。。。。。然后要选择交通工具,选哪一种呢?需要登陆12306看看火车,再去看看飞机,再对比一下汽车。。。。。。然后就是到北京了,怎么找到定好的酒店?先吃饭还是先洗澡。。。。。。

问题:这种思路就是直接通过程序执行的前后顺序来一步步的去为每一步设定好动作和为下一步做准备,这就有点像面向过程(水平有限,此处的面向过程是从字面上理解的)的思路,很容易出现顺着这条路走下来,走着走着出现一个小问题,整个步骤就需要重新规划。这也就是封装被提出来的原因吧?

交流之后的思路:

  出差去北京:

    1、整理行李

      1)换洗衣服

      2)钱包

      3)身份证

    2、选择交通工具

      1)对可能乘坐的交通工具的对比

      2)买票

    3、在北京期间的时间规划

      1)第一天去哪

      2)第二天干嘛

      3)第三天

这样一来,整个思路就非常清晰,有点像小学时做数学题,把公式写出来,然后把数代入计算就行了

这种思想不管是写程序还是平常生活都非常有用,在此与诸位共勉

时间: 2024-10-26 13:04:16

关于前两天的一个比较复杂的程序逻辑的思考的相关文章

前两天有人问怎么取得一个目录下的文件,下面就是例子

<%@ Language=VBScript %> <% '================================================================ '函数名称:FileList '函数功能:列出目录下所有文件 '主要参数说明: '1--FolderUrl 虚拟路径 不可为空 '2----FileExName 文件扩展名 '函数返回值:收文记录 '====================================================

BestCoder Round #4 前两题 hdu 4931 4932

第一题太水了.. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int a[6]; 7 int main(){ 8 int cas; 9 scanf( "%d", &cas ); 10 while( cas-- ){ 11 for( int i = 0; i <

总结一下前两天刚尝试的socket编程-使用AsyncSocket

说来惭愧,搞了两年ios居然木有用过socket...初学ios的时候倒是了解过,但是两年不用,之前学的内容已经完全忘光光.于是又开始网上各种查. 用cf的socket貌似显得很拽的样子,但是实在不适合我这种领导紧逼着出项目的情况.搜了下发现目前最常用的socket库应该就是AsyncSocket了.嗯,看起来很简单,搞it~ 这个库有基于runloop和GCD两种,据我一哥们说runloop版本是基于timer机制实现异步处理,会跟scroller的滚动动画冲突.我暂时还没有验证他的说法,不过

前两篇转载别人的精彩文章,自己也总结一下python split的用法吧!

前言:前两篇转载别人的精彩文章,自己也总结一下吧! 最近又开始用起py,是为什么呢? 自己要做一个文本相似度匹配程序,大致思路就是两个文档,一个是试题,一个是材料,我将试题按每题分割出来,再将每题的内容与材料中进行文本相似度匹配. 所以先首先要做的是将试题把每道题作为一个字符串切割开来,存放到字典中. 程序入下: # -*- coding:utf-8 -*- import re #正则模块 f = open('test.txt','r') s = f.read() s1 = s.split('工

阅读《大型网站技术架构》前两章心得体会及总结

最近阅读了<大型网站技术架构>这一本书,对于这一行业刚入门的菜鸟来说,虽然只读了前两章,却让我感受颇深,同时也学习和见识到了很多之前不了解.不明白的东西. 通过阅读前两章,我才真正的初步明白了一个刚刚成型的小型网站是如何一步一步的成长为一个大型网站.从网站的最开始的基础架构,到一步步实现网站的性能提升,到如何处理网站的高并发数据,到使用反响代理和CDN加速网站响应,让我一步一步的真正的认识到了架构的重要性,也让我这个菜鸟学习到了很多之前不懂的知识. 第一章主要讲授了大型网站架构演化的发展历程,

《你的灯亮着吗》读后感 (前两篇)

近期读了<你的灯亮着吗>的前两篇,对这本书有一些感想. <你的灯亮着吗>前两篇分别讲述了:雷龙塔客房没有住满,电梯就不够用的问题,以及比利对于政府投标的问题.通过这两个问题让我明白了如果作为问题解决者应该注意或知道点什么. 面对不同的问题,我们不应去匆忙的寻找解决办法,而是了解问题的人是谁?也就是这是谁的问题:给要解决的问题下定义:还要发掘问题的本质是什么.就像雷龙塔问题,如果电梯运动慢早一点通知工程队,早一点修好,就不会出现之后的踢碎镜子和在电梯里拥挤着涂鸦等一系列问题.注意幻想

张量漫谈(前两篇)

文档下载: 张量漫谈_第一篇 张量漫谈_第二篇 最初的目的是为了供大一高等代数复习之用,他们学习这部分使用的教材是<高等线性代数学>,关于张量的这部分书本上的错误和不自然的地方很多,由于缺乏资料,索性自己写一份讲义.预计三篇,这是前两篇,最后一篇预计讨论一般模的张量,同样,最后一篇短期内也不会更新. 附原文摘要:张量为什么要如此定义? 这或许是一个让人头疼的问题. 因为其复杂的而多样定义让人感到困惑. 简单的定义无法抓到本质, 复杂的定义缺乏解释. 更为关键的是, 似乎在目力所及的范围内也很难

两天撸一个天气应用微信小程序

这是一个完整的已经线上运行的天气应用小程序,点击可查看源码,可随意 star.也可以扫描下方的小程序码直接体验. 效果图: 说明 鸣谢:pure 天气 APP:首页样式借鉴了 pure天气 APP.如侵删. 数据来源 地理编码.天气数据均来自百度地图开放平台.个人开发完全免费,有对应的小程序 sdk,加入即可,但是返回的天气数据较少. 运行前准备 注册微信小程序,获取 appid 注册百度地图开放平台开发者,创建应用,获取 ak(其他配置自行查看) 在 app.js 中替换 globalData

【sql 练习题 36,37】查询每门功成绩最好的前两名,统计每门课程的学生选修人数(超过 5 人的课程才统计)

题目36:查询每门功成绩最好的前两名 分析:先用自己交自己,条件为a.courseid = b.courseid and a.score<b.score,其实就是列出同一门课内所有分数比较的情况. 通过a.studentid和a.courseid可以联合确定这个同学的这门课的这个分数究竟比多少个其他记录高/低, 如果这个特定的a.studentid和a.courseid组合出现在这张表里的次数少于2个,那就意味着这个组合(学号+课号+分数)是这门课里排名前二的. 所以下面这个计算中having