[课程相关]homework-06
一、c++11
lambda
/*
* File: main.cpp
* Author: liangjie
*
* Created on 2013年11月23日, 下午12:02
*/ #include <cstdlib>
#include <iostream> using namespace std; /*
*
*/
int main(int argc, char** argv) {
string aa = "Hello World!";
int b = , c = ;
for_each(aa.begin(), aa.end(), [&b, &c](char a){if (a == 'l') {b++;} else if (a == 'e'){c++;};});
cout<< "Number of e: " << c<<endl;
cout<<"Number of l: "<<b<<endl;
return ;
}
lambda,看了一下就搞懂了。
smart_ptr
/*
* File: main.cpp
* Author: liangjie
*
* Created on 2013年11月23日, 下午12:16
*/ #include <cstdlib>
#include <iostream>
#include <memory> using namespace std; /*
*
*/ void move_print(int n){
unique_ptr<string> aa(new string("Hello World!"));
for (int i=aa.length() - n; i<aa.length();i++){
cout<<aa[i];
}
for (int i=;i<aa.length()-n;i++){
cout<<aa[i];
}
} int main(int argc, char** argv) {
int n = ;
move_print(n);
return ;
}
smart_prt,自动清理申请的空间。概念不错。
二、围棋程序
01年就有C#了?搜了一下居然是00年发布的。我第一次听说c#大概是11年吧。原来也不是一个很新的语言了。
playPrev函数
public void playPrev(GoMove gm)
{
Point thepoint = gm.Point;
Grid[thepoint.X,thepoint.Y].removeStone();
if (gm.DeadGroup)
{
int thecount = gm.DeadGroup.Count;
thecount = gm.DeadGroup.Capacity;
System.Collections.IEnumerator theenum = gm.DeadGroup.GetEnumerator();
while (theenum.MoveNext())
{
thepoint = (Point)theenum.Current;
Grid[thepoint.X,thepoint.Y].setStone(gm.DeadGroupColor);
}
}
m_gmLastMove = gameTree.peekPrev();
if (m_gmLastMove)
{
repaintOneSpotNow(m_gmLastMove.Point);
setLabelsOnBoard(m_gmLastMove);
setMarksOnBoard(m_gmLastMove);
}
optRepaint();
m_colorToPlay = nextTurn(m_colorToPlay);
textBox1.Clear();
if (m_gmLastMove)
textBox1.AppendText(m_gmLastMove.Comment);
}
编码风格:
个人很少用c系的语言,所以说不上什么好坏。不过单从代码角度来说的话,变量名还可以,能传递一部分的意思。不过注释感觉有些过多,很多时候变量名以及代码结构已经足以表达清楚意思了。在我的观点里,一个函数最多只需要一行注释,说明函数的用途及用法。至于函数内部的实现应该靠代码就足以表述清楚——如果表述不清楚,那就是函数写的有问题。
一大串if else我觉得switch比较好。当然我不是用c的,貌似switch只能处理字符?那还不如叫switch_only_for_char。
程序架构:
1500多行,实在没有太多耐心来看。想必其中大部分代码都是画界面的。
MVC的话,感觉并没有很明确的体现出来。各种函数的调用好像并没有什么明显的规则,比如nextTurn()这种,如果按照MVC的话,应该是不能直接调用的。
不过话说话来,MVC还是用在大型程序上比较好,这种小程序完全没必要。大炮大蚊子明显没有用手打有效。
错误处理:
trycatch好像有点太笼统了。如果能细致一点指出具体的错误就更好了。
特殊情况最好归到trycatch里,统一管理。写到外面容易被当做正常情况来看待。
注释:
加到代码里了,太长就不贴到这了。
[课程相关]homework-06的更多相关文章
- 【学习笔记】B站-2019-NLP(自然语言处理)之 BERT 课程 -- 相关课程笔记
BERT 课程笔记 1. 传统方案遇到的问题 BERT的核心在于Transformer,Transformer就类似seq2seq网络输入输出之间的网络结构. 传统的RNN网络:最大的问题,因为不能并 ...
- Linux及安全课程——相关链接总结
附录:学习笔记链接总结 MOOC课程学习笔记与实验: 第一周:计算机是如何工作的 第二周:操作系统是怎么工作的 -- 一个简单的时间片轮转多道程序内核代码及分析 第三周:构造一个简单的Linux系统M ...
- [课程相关]homework-04
零.准备工作 这次的作业仍然是结对编程,我们队伍的成员为:梁杰.夏天晗.谢祖三.上次我们是选择了一个时间大家聚在一起进行编程,效果不错,所以这次我们还是决定采用这种方式.由于大家平时比较忙,这周六日我 ...
- [课程相关]homework-02
一.如何组织代码 因为这个代码比较简单,用函数就足够了,个人觉得没必要用类,杀鸡不必用牛刀. 代码有点长,主要是加了很多判断参数的部分. 提取了一个公共的递归函数. 用了不少全局变量,可能当做参数传入 ...
- 潭州课堂25班:Ph201805201 django 项目 第四十二课 后台 课程相关,用户组管理 (课堂笔记)
在线课程: 当点击进入页面时,显示所有课程 def get(self, request): courses = Course.objects.select_related('category', 't ...
- java面试(Web相关)06
1.JSP 和 servlet 有什么区别? JSP 是 servlet 技术的扩展,本质上就是 servlet 的简易方式.servlet 和 JSP 最主要的不同点在于,servlet 的应用逻辑 ...
- [课程相关]附加题——stack的理解
一.stack的三种解释 stack有三种解释,我个人理解如下. 1.用户自定义的stack 用户自定义的stack就是一般意义上的后进先出队列,从名字上就能理解了,stack由下向上增长,有一个顶指 ...
- [课程相关]homework-09
零.前言 这次的作业比较特殊,有两种做法.由于我对网页很熟悉,所以选择网页. 细节不赘述,下面写一下这次作业的几个亮点. 一.亮点 最大的亮点就是这个页面是纯客户端的,没有服务端.也就是说所有功能都是 ...
- homework -06 围棋
playPrev功能的实现 public void playPrev(ref GoMove gm) { Point p = gm.Point; m_colorToPlay = gm.Color; cl ...
随机推荐
- JQuery中attr ,html,text,val,的一些用法
attr:主要获取元素内部的属性,返回 的是属性值 html:返回当前元素(不包括他自己本身的标签,但是可以返回他自己的)的标签加上内容.仅限于返回第一个. text:和 .html() 方法不同, ...
- CreateWaitableTimer和SetWaitableTimer函数(定时器)
用户感觉到软件的好用,就是可以定时地做一些工作,而不需要人参与进去.比如每天定时地升级病毒库,定时地下载电影,定时地更新游戏里的人物.要想 实现这些功能,就可以使用定时器的API函数CreateWai ...
- Magento开发文档(一):Magento入门
开始之前,首先声明下,Magento开发者手册由Alan Storm发表在Magento官方网站上.总共分八个部分,由浅入深的介绍了Magento的MVC架构及Magento中使用的比较特殊的EAV模 ...
- Form实现主从块金额汇总
1.FORM使用app_calculate.running_total汇总行金额,行上有编码重复验证. 情况一:当录入多个编码重复的行并保存时,报错,清除一个重复行再保存(头行金额一致),报错&quo ...
- Ehcache(04)——设置缓存的大小
http://haohaoxuexi.iteye.com/blog/2116749 设置缓存的大小 目录 1 CacheManager级别 2 Cache级别 3 大小衡量 4 ...
- Android Studio @Bind的用法,自动生成findViewById无需再实例化控件
第一步:app 的build.gradle文件中添加 如下代码: compile 'com.jakewharton:butterknife:7.0.0' 点击Sync Now 同步下载第二步:安装插件 ...
- PL/pgSQL学习笔记之四
http://www.postgresql.org/docs/9.1/static/plpgsql-structure.html 39.2. PL/pgSQL 的结构 PL/pgSQL是一种块式结构的 ...
- 使用 preferredStatusBarStyle 设置状态栏颜色
iOS9之前,在plist文件中 插入一个新的key,名字为View controller-based status bar appearance,并将其值设置为NO. 然后敲入代码: [UIAppl ...
- linux 源码编译(转)
源代码的用处无非是以下两点;1、软件根据用户的需要加以定制;2、二次开发;注:要根据软件的许可证书约定为准,开发者许可二次开发才行;1、源码包的打包格式;源代码一般以file.tar.gz file. ...
- MySQL Profile
1:查看MySQL当前版本是否支持profile mysql> SELECT @@HAVE_PROFILING; +------------------+ | @@HAVE_PROFILING ...