[课程相关]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 ...
随机推荐
- git会议分享
git add . git add -A git add common.scss 只迁入某个文件 git pull h5 远程的:分支 这样就成功拉取一个新分支了 git push h5(远 ...
- C# JabLib系列之如何保证只运行一个应用程序的实现
保证只运行一个应用程序的C#实现: using System;using System.Collections.Generic;using System.Linq;using System.Windo ...
- 用 const 限定类的成员函数
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于 ...
- javaScript 获取主机地址,项目名等
//获取当前网址 var curWwwPath=window.document.location.href; alert(curWwwPath); //http://localhost:8080/ ...
- jquery 选择器中含有空格注意
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 详解MyEclipse10 安装Spket 1.6.23(支持Extjs4.1.1及jQuery1.8)
用MyEclipse10安装Spket主要有3种方式:在线下载更新.下载Zip覆盖.下载jar包安装.我用在线安装尝试了N次终于还是失败,只好下载jar包来安装,在失败了M次之后终于安装成功,现在网上 ...
- Winform学习手册(目录)
一.基础: WINFORM学习笔记——创建Winform项目 WINFORM学习手册——TextBox.Lable.Button WINFORM学习笔记——窗体生命周期 WINFORM学习手册——对话 ...
- ProcessBuilder和Runtime远程执行
http://desert3.iteye.com/blog/1596020 ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行 ...
- [cocos2dx]怎样将Android手机游戏移植到电视?
近期智能电视很火,我也买了一个小米电视,看片效果不错,网络也还算给力.可是,玩游戏比較蛋疼,要用遥控器,下了一个捕鱼达人试玩了一把,要用方向键控制大炮的方向和远近,再用确定键发射炮弹,根本没法玩... ...
- Codeforces Round #335 (Div. 2) A. Magic Spheres 水题
A. Magic Spheres Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.codeforces.com/contest/606/ ...